2
我有其中上類似下面的查詢的逐位操作來生成N + 1只選擇一個問題:如何查詢使用的LINQ位運算符枚舉標誌來NHibernate的
var files = (from f in Session.Query<File>()
where f.ProjectID == id && ((f.State & FileState.WaitingForFile) == FileState.WaitingForFile)
select f;
代替生成預期SQL的,NHibernate的執行N + 1選擇(File中的所有行)並測試客戶機上的二進制條件。這個問題似乎與延遲加載鏈接爲NHibernateProfiler顯示其堆棧跟蹤以下的罪魁禍首:FileProxy.get_State
如何讓NHibernate的生成正確的SQL(其中專案編號= X和國家& Y = Y) ?
詳細信息如下:
我使用NHibernate 3.2.0.4。
下面是我使用的類:
public class File
{
public virtual int ID { get; set; }
public virtual int ProjectID { get; set; }
public virtual AttachedFileType AttachedFileType { get; set; }
public virtual FileState State { get; set; }
[...]
}
[Flags]
public enum FileState
{
None = 0x0,
Available = 0x1,
WaitingForFile = 0x2,
Archived = 0x4,
[...]
}
謝謝您的時間。
它爲我工作。你的查詢有一個左括號但沒有右括號。也許你確實忽略了一個重要的細節? – Firo