adds some "and (extract year from ?)" to the sql. This does not work in M$ Access. To fix this add
RegisterFunction("year", new SQLFunctionTemplate(NHibernateUtil.DateTime, "year(?1)")); RegisterFunction("month", new SQLFunctionTemplate(NHibernateUtil.DateTime, "month(?1)")); RegisterFunction("day", new SQLFunctionTemplate(NHibernateUtil.DateTime, "day(?1)"));
to the JetDialect After that all worked like a charm
Silly me. Should be: RegisterFunction("year", new SQLFunctionTemplate(NHibernateUtil.Int32, "year(?1)")); RegisterFunction("month", new SQLFunctionTemplate(NHibernateUtil.Int32, "month(?1)")); RegisterFunction("day", new SQLFunctionTemplate(NHibernateUtil.Int32, "day(?1)"));
the JetDialect has some strange ways to try to extract the year(month, day) part of an datetime:
crit.Add(Restrictions.Eq(Projections.SqlFunction("Year", NHibernateUtil.DateTime, Projections.Property("lastChanged")), filter.LastChanged.Year));
adds some "and (extract year from ?)" to the sql. This does not work in M$ Access.
To fix this add
RegisterFunction("year", new SQLFunctionTemplate(NHibernateUtil.DateTime, "year(?1)"));
RegisterFunction("month", new SQLFunctionTemplate(NHibernateUtil.DateTime, "month(?1)"));
RegisterFunction("day", new SQLFunctionTemplate(NHibernateUtil.DateTime, "day(?1)"));
to the JetDialect
After that all worked like a charm