[英]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.