У меня проблема, когда побитовая операция над запросом, подобным следующему, генерирует N + 1 выбор:
var files = (from f in Session.Query<File>()
where f.ProjectID == id && ((f.State & FileState.WaitingForFile) == FileState.WaitingForFile)
select f;
Вместо генерирования ожидаемого SQL, NHibernate выполняет N + 1 выбор (все строки в файле) и проверяет двоичное условие на клиенте.Эта проблема, похоже, связана с отложенной загрузкой, поскольку NHibernateProfiler показывает в своем стеке следующую причину: FileProxy.get_State
Как мне получить NHibernate для генерации правильного SQL (где ProjectID = x AND State &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,
[...]
}
Спасибо за ваше время.