ICriteria поддерживает произвольный SQL в качестве ограничения . Поэтому вы могли бы сделать:
var criteria = session.CreateCriteria(typeof(Obs))
.Add(Expression.Sql("MONTH({alias}.Datum) = ?", 11, NHibernateUtil.Int32);
var results = criteria.List<Obs>();
Это выполнит SQL-запрос с {псевдонимом}, замененным псевдонимом, который NHibernate использует для таблицы Obs. Конечно, это ограничивает вашу мобильность для других баз данных, поскольку SQL теперь встроен в ваш запрос.
Еще одна вещь, которую следует помнить, это то, что имена, которые вы здесь используете, являются отображенными именами свойств и классов, а не именами столбцов и таблиц.