自定义SQL函数我希望能够调用名为“recent_date”自定义函数作为我的HQL的一部分。就像这样:[Date] >= recent_date()
NHibernate的方言
我创建了一个新的方言,从MsSql2000Dialect继承和指定的方言我的配置。
public class NordicMsSql2000Dialect : MsSql2000Dialect
{
public NordicMsSql2000Dialect()
{
RegisterFunction(
"recent_date",
new SQLFunctionTemplate(
NHibernateUtil.Date,
"dateadd(day, -15, getdate())"
)
);
}
}
var configuration = Fluently.Configure()
.Database(
MsSqlConfiguration.MsSql2000
.ConnectionString(c => ....)
.Cache(c => c.UseQueryCache().ProviderClass<HashtableCacheProvider>())
.Dialect<NordicMsSql2000Dialect>()
)
.Mappings(m => ....)
.BuildConfiguration();
当调用recent_date()
我得到以下错误: System.Data.SqlClient.SqlException:“recent_date”不是可以识别的函数名
我使用它在一个地方语句HasMany映射如下。
HasMany(x => x.RecentValues)
.Access.CamelCaseField(Prefix.Underscore)
.Cascade.SaveUpdate()
.Where("Date >= recent_date()");
我在这里错过了什么?
对不起,有关。我应该明确指出“SELECT .... FROM SomeTable WHERE ....”只是一个例子。我们不在代码中使用该部分。 – 2009-12-04 11:16:10
答案表明。映射中的任何地方都期望纯SQL而不是任何形式的HQL。 – Rashack 2010-11-01 12:45:17