2
我有簡單的NHibernate的LINQ查詢(針對MS SQL CE 4):NHibernate的3.2 - MsSqlCeDialect:方言不支持可變極限
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是否使用了正確的方言。
任何建議如何解決這個問題?