это продолжение вопроса Better DateTime? или использовать значение по умолчанию (DateTime) для NULL?
Я попытался реализовать простой запрос, работающий с DateTime?
, на другом примере, а не на другом вопросе.
В моем случае public virtual DateTime? Expiration
свойство отображается как
<property name="Expiration" not-null="false" type="DateTime" />
Теперь мой запрос LINQ выглядит следующим образом
return (from product in session.Query<Product>()
where
!product.Hidden &&
(product.Expiration != null ||
(product.Expiration.Value - DateTime.Now).TotalDays < 5 && (product.Expiration.Value - DateTime.Now).TotalDays >= 0)
select product).ToList();
Запрос говорит: выберите все продукты, которые не скрыты и не истекают через 5 дней (<5 продуктов с истекшим сроком действия, поэтому я должен добавить вторую проверку) </p>
Я получаю исключение из ANTLR:
'Antlr.Runtime.NoViableAltException'. [.Where(NHibernate.Linq.NhQueryable`1[Model.Product], Quote((product, ) => (AndAlso(Not(product.Hidden), OrElse(DateTime.op_Inequality(product.Expiration, NULL), AndAlso(LessThan(DateTime.op_Subtraction(product.Expiration.Value, p2).TotalDays, p3), GreaterThanOrEqual(DateTime.op_Subtraction(product.Expiration.Value, p4).TotalDays, p5)))))), )]
Как мне обработать DateTime? в NHibernate 3.0 с LINQ?