Я использую NHibernate версии 2.0.0.4000.
В одном из моих запросов я хотел использовать функцию sql dateadd для добавления количества дней. Это не было зарегистрировано, поэтому я создал свой собственный диалект и зарегистрировал функцию следующим образом:
RegisterFunction("adddays",
new SQLFunctionTemplate(NHibernateUtil.DateTime,
"dateadd(dd, ?1, ?2)"));
Регистрация получает удар и, кажется, работает нормально. Я использую функцию в запросе DetachedCriteria следующим образом:
...
Restrictions.LtProperty("DateColumn1"
Projections.SqlFunction("adddays", NHibernateUtil.DateTime,
Projections.Constant(days),
Projections.Property("DateColumn2"))
...
Критерии возвращаются из метода и передаются другому запросу. При выполнении окончательного запроса я получаю следующее исключение:
NHibernate.MappingException was caught
Message="No persister for: NHibernate.Criterion.SqlFunctionProjection"
Source="NHibernate"
StackTrace:
at NHibernate.Impl.SessionFactoryImpl.GetEntityPersister(String entityName,
Boolean throwIfNotFound)
at NHibernate.Impl.SessionFactoryImpl.GetEntityPersister(String entityName)
...
Ни в одном из опубликованных мною постов эта проблема не упоминается. Кто-нибудь может помочь?
Приветствия заранее.
Nige.