Linq NHibernate 3使用SQL Compact 4.0和FirstOrDefault()抛出NotSupportedException
我有一段相当简单的代码,可以从数据库中检索对象。这在SQLServer2008中似乎可以正常工作,但在SQLServerCompact中却失败了。SQL Server CE支持TOP()-这只是NHibernate 3中的一个bug吗 代码:Linq NHibernate 3使用SQL Compact 4.0和FirstOrDefault()抛出NotSupportedException,linq,nhibernate,sql-server-ce,Linq,Nhibernate,Sql Server Ce,我有一段相当简单的代码,可以从数据库中检索对象。这在SQLServer2008中似乎可以正常工作,但在SQLServerCompact中却失败了。SQL Server CE支持TOP()-这只是NHibernate 3中的一个bug吗 代码: 你用错方言了。使用mssqlce40方言对于我来说,mssqlce40方言不起作用,我必须覆盖自定义方言中的SupportsVariableLimit以获得分页工作 public class MyDialect : MsSqlCe40Dialect {
你用错方言了。使用
mssqlce40方言
对于我来说,mssqlce40方言不起作用,我必须覆盖自定义方言中的SupportsVariableLimit以获得分页工作
public class MyDialect : MsSqlCe40Dialect
{
public override bool SupportsVariableLimit
{
get
{
return true;
}
}
}
我切换到MSSQLSCE40方言,这没有什么区别。我刚刚尝试了你的代码,效果很好。您使用的是最新版本(3.2 GA)吗?如果它“没有什么不同”,您可能忘记了编译或部署,因为MSSQLCE40方言正好实现了这一功能(分页)。我知道,因为我是最初的autor:-)我有3.2.0.4000版的NHibernate.dll,让我再多玩一玩,确保我对config.xml的更改被读取。它可以工作!在再次测试之前,我一定没有将配置xml复制到输出文件夹。谢谢(既感谢您的回答,也感谢您的NHibernate首先为支持它所做的贡献)
<property name="dialect">NHibernate.Dialect.MsSqlCeDialect</property>
<property name="connection.driver_class">NHibernate.Driver.SqlServerCeDriver</property>
System.NotSupportedException occurred
Message=Dialect does not support limits.
Source=NHibernate
StackTrace:
at NHibernate.Dialect.Dialect.GetLimitString(SqlString queryString, Nullable`1 offset, Nullable`1 limit, Parameter offsetParameter, Parameter limitParameter)
InnerException:
public class MyDialect : MsSqlCe40Dialect
{
public override bool SupportsVariableLimit
{
get
{
return true;
}
}
}