Я использую NHibernate
-приводное хранилище, Fluent
сопоставления и пытаюсь использовать Linq to NHibernate
.
Но для такого простого запроса, как этот
Retrieve<XValue>(x => (x.Timestamp.CompareTo(start) >= 0 &&
x.Timestamp.CompareTo(end) <= 0 ));
// 'Retrieve' here acts simply as 'session.Query<T>().Where(expression);'
Я получаю следующий результат:
System.NotSupportedException: Int32 CompareTo(System.DateTime)
Я не знаю почему, но CompareTo
операции не проецируются в базу данных, и вывод также выглядит довольно странно:
create table "QuotUnitDescriptor" (
Id integer,
PaperId INTEGER,
Timestamp DATETIME,
InPaperIdx INTEGER,
primary key (Id)
)
NHibernate: INSERT INTO "QuotUnitDescriptor" ......................
// Many INSERT's
NHibernate: select cast(count(*) as INTEGER) as col_0_0_
from "QuotUnitDescriptor" binaryunit0_
Я не могу понять, почему эта операция вызывает операцию select -> integer
.
Как должен быть реализован следующий ориентированный на дату запрос? (лучше использовать Linq
, но я думаю, что критерии тоже хороши).