NHibernate 3 выбрасывает NotSupportedException с SQL Compact 4.0 и FirstOrDefault () - PullRequest
2 голосов
/ 10 сентября 2011

У меня есть довольно простой кусок кода, который извлекает объект из БД.Кажется, это работает нормально с 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;
    }
}

Настройка 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: 

Ответы [ 2 ]

5 голосов
/ 10 сентября 2011

Вы используете неправильный диалект.Используйте MsSqlCe40Dialect.

1 голос
/ 14 сентября 2011

Для меня MsSqlCe40Dialect не работает, мне пришлось переопределить SupportsVariableLimit в пользовательском диалекте, чтобы получить работу подкачки.

public class MyDialect : MsSqlCe40Dialect
{
    public override bool SupportsVariableLimit
    {
        get
        {
            return true; 
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...