NHibernate 3使用SQL Compact 4.0和FirstOrDefault()抛出NotSupportedException

Tra*_*vis 2 linq nhibernate sql-server-ce

我有一段相当简单的代码,可以从DB中检索对象.这似乎适用于SQL Server 2008,但随着SQL Server Compact的爆发.SQL Server CE支持TOP() - 这只是NHibernate 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

NHibernate配置:

<property name="dialect">NHibernate.Dialect.MsSqlCeDialect</property>
<property name="connection.driver_class">NHibernate.Driver.SqlServerCeDriver</property>
Run Code Online (Sandbox Code Playgroud)

例外:

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: 
Run Code Online (Sandbox Code Playgroud)

Die*_*hon 5

你使用的是错误的方言.使用MsSqlCe40Dialect.