gpt4 book ai didi

c# - SQL 2000 的 NHibernate 变量限制

转载 作者:太空宇宙 更新时间:2023-11-03 13:06:39 25 4
gpt4 key购买 nike

我正在尝试在 SQL 2000 的休眠状态下使用 Take 方法。这样做时,出现错误:Dialect does not support variable limits.

在四处搜索时,我找到了一种方法来覆盖对变量限制支持的检查,并将我的代码设置如下:

        return Fluently.Configure()
.Database(PersistenceConfigurer("####"))
.Mappings(m => m.HbmMappings.AddFromAssembly(Assembly.Load("####")))
.Mappings(m => m.FluentMappings.AddFromAssembly(Assembly.Load("####")))
.CurrentSessionContext<WebSessionContext>()
.BuildSessionFactory();
}

private static IPersistenceConfigurer PersistenceConfigurer(string connection)
{
var provider = MsSqlConfiguration.MsSql2000.ConnectionString(connection);
provider.Dialect<FixedDialect>();
return provider;
}
}
public class FixedDialect : NHibernate.Dialect.MsSql2000Dialect
{
public override bool SupportsVariableLimit
{
get
{
return true;
}
}
}

这似乎生成了正确的语法。它创建语句

[ select top @p0 order0_.field1 as field1_, order0_.field2 as field2_ from db.table order0_ where order0_.field3=@p1 ]
Name:p1 - Value:LY02 Name:p2 - Value:10

但它没有为 @p0 设置值,所以它会返回 Line 1: Incorrect syntax near '@p0'.

我能做些什么来解决这个问题吗?为什么这个方言不支持top函数?

最佳答案

我只需要将 NHibernate 更新到最新版本。 4.0.3版本不存在该问题。

关于c# - SQL 2000 的 NHibernate 变量限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30580011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com