[英]Why would NHibernate.ISession.CreateQuery return something different from CreateSQLQuery when CacheMode=Ignore?
这是一个非常简单的问题,但我对此感到困惑。 在Visual Studio的即时窗口中,我看到以下内容:
session.CacheMode
Ignore
session.CreateQuery("SELECT COUNT(*) FROM Protein").List()
Count = 1
[0]: 0
session.CreateSQLQuery("SELECT COUNT(*) FROM Protein").List()
Count = 1
[0]: 6
可能有多种原因导致这种情况,请检查以下映射:
where
过滤器的<class>
映射。 force="true"
属性的<discriminator>
。 optional="true"
的<join>
映射。 <loader query-ref="...">
。 session.EnableFilter
启用的实体上的<filter>
。 Protein
类未映射到Protein
表。 Protein
表,因此NHibernate正在查询foo.Protein
但是您的sql正在查询dbo.Protein
。 之后,它开始变得更加神秘,例如使用自定义方言,实体修饰符等。
查看正在发生的情况的一种简单方法是查看发出的SQL,您可以通过以下方法执行此操作:
<property name="show_sql" value="true"/>
并查看控制台/记录器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.