2016-09-29 6 views
2

Я хочу, чтобы читать записи из ЛИЦУ где поля VarCharDate является Между две даты ввода пользователя. Если я выполняю sql напрямую, он успешно возвращает все записи между двумя датами.NHibernate Linq использовать Между пункта на IQueryable

т.е.

SELECT * FROM ENTITY WHERE VarCharDate BETWEEN '2010-09-01' AND '2012-08-01' 

Здесь поле VarCharDate имеет тип VARCHAR, который предопределен и не могу изменить его на DateTime. Формат даты фиксирован на «ГГГГ-ММ-ДД» для хранения значений в этом поле.

Проблема:

EDIT: Я использую FluentNhibernate для картографических организаций. Также я строю схему при запуске приложения по конфигурации.

Я использую Nhibernate Linq для извлечения записей в моем приложении C#. я пытался что-то вроде:

session.Query<ENTITY>() 
      .Where(e=> 
       Convert.ToDateTime(e.VarCharDate) >= Convert.ToDateTime(loInputDateString) && 
       Convert.ToDateTime(e.VarCharDate) <= Convert.ToDateTime(hiInputDateString) 
      ).ToList(); 

Выполнения выше результатов заявления в NotSupportedException ошибок во время выполнения.

Google показывает результат в отношении ExtensionMethods, и я обнаружил, что все это запутывает, так что не удалось его реализовать.

Как я мог достичь что-то вроде:

session.Query<ENTITY>(e=> e.VarCharDate.Between(loInputDateString,hiInputDateString)).ToList(); 

я пытался что-то упоминается в ссылке LINQ Between Operator

Но это не работает, хотя.

ответ

0

Вы не указали, как вы отображали ваши объекты (HBM, FluentNHibernate, ...). Но вы можете использовать TypeConverter. Если возможно изменить определение свойства VarCharDate в вашем классе, измените его на DateTime и позвольте NHibernate преобразовать его из строки в DateTime и обратно.

+0

Привет, Раббан, обновил вопрос, также хочу упомянуть, что я использую FluentNhibernate для сопоставления объектов. – Shikha

+0

Вы пробовали его с помощью TypeConverter или хотите остаться с расширением Between? И можете ли вы изменить свойство (а не поле) на DateTime? – Rabban

Смежные вопросы