Разумно для конструктора выдать исключение, пока это моется правильно. Если Вы следуете парадигма RAII (Приобретение Ресурса Является Инициализацией), тогда, конструктору довольно свойственно сделать значимую работу; правильно написанный конструктор в свою очередь вымоется после себя, если это не может полностью быть инициализировано.
Я думаю, Где
- это оператор SQL, а не оператор HQL. Значит, он не знает функции. Он работает только для HQL, в запросах или фильтрах.
Я думал, вам нужно поставить перед своей функцией префикс "dbo". всякий раз, когда вы его использовали. Мой собственный диалект имеет следующее:
RegisterFunction("dbo.isbounded", new SQLFunctionTemplate(NHibernateUtil.Double, "dbo.IsBounded(?1, ?2, ?3, ?4, ?5, ?6)"));
Затем он вызывается с использованием
Expression.Sql("dbo.IsBounded(...)")