gpt4 book ai didi

NHibernate 3.2 - MsSqlCeDialect : Dialect does not support variable limits

转载 作者:行者123 更新时间:2023-12-04 05:52:16 25 4
gpt4 key购买 nike

我有简单的 NHibernate Linq 查询(针对 MS SQL CE 4):

var productionStarts = (from p in session.Query<Production>()
orderby p.Start descending
select p.Start)
.Distinct()
.Take(maxProductionPlansPerOperation)
.ToArray();

在 NH 3.2.0.4000 中抛出异常:
System.NotSupportedException occurred
Message=Dialect does not support variable limits.
Source=NHibernate
StackTrace:
at NHibernate.Dialect.Dialect.GetLimitString(SqlString queryString, Nullable`1 offset, Nullable`1 limit, Parameter offsetParameter, Parameter limitParameter) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Dialect\Dialect.cs:line 1707
InnerException:

问题是导致“.Take(...)”。如果注释掉查询有效。

它适用于 NH 3.1,但不再适用于 NH 3.2。

在一些较旧的帖子中,我发现建议使用“MsSqlCe40Dialect”,因此我更改了方言但没有效果。我通过检查 ISessionFactory 实例的属性来验证 NH 使用的是正确的方言。

任何建议如何解决这个问题?

最佳答案

这是方言中的错误,请使用此自定义方言使其工作:

public class FixedMsSqlCe40Dialect : MsSqlCe40Dialect
{
public override bool SupportsVariableLimit
{
get
{
return true;
}
}
}

关于NHibernate 3.2 - MsSqlCeDialect : Dialect does not support variable limits,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9944136/

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