Не могу понять, в чем проблема с nHibernate.
Мой домен довольно прост. Поскольку большинство моих данных отображаются в разбитой на страницы сетке (jqGrid), мне нужно использовать Future <> , чтобы получить общее количество строк.
Если я запускаю этот кусок кода здесь, он работает правильно:
ICriteria FiltersCriteriaCount = session.CreateCriteria<Domain.Reminder>();
ICriteria FiltersCriteria = session.CreateCriteria<Domain.Reminder>();
var TotalRecords = FiltersCriteriaCount
.SetProjection(Projections.RowCount())
.FutureValue<Int32>();
var sResult = FiltersCriteria
.CreateAlias("Company", "Company")
.CreateAlias("PlanType", "PlanType")
.CreateAlias("OperationsManager", "OperationsManager")
.CreateAlias("Schedules", "Schedules", NHibernate.SqlCommand.JoinType.LeftOuterJoin)
.SetFirstResult(0)
.SetMaxResults(100)
.Future<Domain.Reminder>()
.ToList<Domain.Reminder>();
но если я добавлю ограничение, я получу исключение could not resolve property: Schedules.Notes of: BpReminders.Domain.Reminder
:
ICriteria FiltersCriteriaCount = session.CreateCriteria<Domain.Reminder>();
ICriteria FiltersCriteria = session.CreateCriteria<Domain.Reminder>();
FiltersCriteriaCount.Add(Restrictions.Eq("Schedules.Notes", ""));
FiltersCriteria.Add(Restrictions.Eq("Schedules.Notes", ""));
var TotalRecords = FiltersCriteriaCount
.SetProjection(Projections.RowCount())
.FutureValue<Int32>();
var sResult = FiltersCriteria
.CreateAlias("Company", "Company")
.CreateAlias("PlanType", "PlanType")
.CreateAlias("OperationsManager", "OperationsManager")
.CreateAlias("Schedules", "Schedules", NHibernate.SqlCommand.JoinType.LeftOuterJoin)
.SetFirstResult(0)
.SetMaxResults(100)
.Future<Domain.Reminder>()
.ToList<Domain.Reminder>();
Если я избавлюсь от Future <> и трансформирую свой код, то все будет нормально:
ICriteria FiltersCriteria = session.CreateCriteria<Domain.Reminder>();
FiltersCriteria.Add(Restrictions.Eq("Schedules.Notes", ""));
var sResult = FiltersCriteria
.CreateAlias("Company", "Company")
.CreateAlias("PlanType", "PlanType")
.CreateAlias("OperationsManager", "OperationsManager")
.CreateAlias("Schedules", "Schedules", NHibernate.SqlCommand.JoinType.LeftOuterJoin)
.SetFirstResult(0)
.SetMaxResults(100)
.List<Domain.Reminder>();
Я не могу найти причину для этого.
Любая помощь будет очень признательна.