Linq-NHibernate String / DateTime Преобразование в Где - PullRequest
0 голосов
/ 13 января 2010

Я только начинаю с Linq для NHibernate и у меня возникают проблемы с довольно простым запросом. У меня есть столбец базы данных, который определяется как varchar. В запросе linq мне нужно сравнить это значение со значением datetime (все значения, хранящиеся в столбце varchar, являются действительными датами). Я пытаюсь это:

var list = (from o in session.Linq<ObjectName>() where Convert.ToDateTime(o.ColumnName) >= startDate select o).ToList();

При использовании Convert.ToDateTime я получаю это исключение:

Невозможно использовать подзапросы по критериям без прогноза.

* +1007 *

Это с 1.0.0.4000 NHibernate.Linq.

1 Ответ

1 голос
/ 19 января 2010

Я бы попробовал сопоставить ваш столбец varchar как DateTime, реализуя IUserType для выполнения преобразования. Я не знаю, как вы на самом деле храните DateTime (т.е. какое представление), но имейте в виду, что база данных должна иметь возможность сравнивать их так же, как сравнивают два datetime. Например, даты, представленные в ISO-8601, могут сделать это.

...