【问题标题】:NHibernate 3 throwing NotSupportedException with SQL Compact 4.0 and FirstOrDefault()NHibernate 3 使用 SQL Compact 4.0 和 FirstOrDefault() 抛出 NotSupportedException
【发布时间】:2011-09-10 00:06:01
【问题描述】:

我有一段相当简单的代码可以从数据库中检索对象。这似乎在 SQL Server 2008 上运行良好,但在 SQL Server Compact 上却失败了。 SQL Server CE 支持 TOP() - 这只是 NH​​ibernate 3 中的一个错误吗?

代码:

public override Profile GetProfileByName(string name)
{
    using (var tc = TC)
    {
        var query = from profiles in tc.Session.Query<Profile>()
                    where profiles.Name == name
                    select profiles;
        Profile profile = query.FirstOrDefault();
        tc.Commit();
        return profile;
    }
}

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: 

【问题讨论】:

    标签: linq nhibernate sql-server-ce


    【解决方案1】:

    您使用了错误的方言。使用MsSqlCe40Dialect

    【讨论】:

    • 我切换到 MsSqlCe40Dialect 并没有什么不同。
    • 我刚刚试过你的代码,它工作正常。您使用的是最新版本(3.2 GA)吗?如果它“没有任何区别”,您可能忘记编译或部署,因为 MsSqlCe40Dialect 正是实现了这一功能(分页)。我知道,因为我是原作者 :-)
    • 我有 NHibernate.dll 的 3.2.0.4000 版本,让我多尝试一下,并确保正在读取我对 config.xml 的更改。
    • 有效!在再次测试之前,我一定没有将配置 xml 复制到输出文件夹。谢谢! (无论是为了您的回答,还是为了您的 NHibernate 贡献以首先支持它)
    【解决方案2】:

    对我来说 MsSqlCe40Dialect 不起作用,我必须在自定义方言中覆盖 SupportsVariableLimit 才能进行分页工作。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多