NHibernate поддерживает функцию: LEN - PullRequest
1 голос
/ 12 февраля 2012

Я хочу получить результаты:

select * from Cate where LEN(code)=2

Мой код:

var filter1 = Restrictions.Eq(
                 Projections.SqlFunction("LEN", NHibernateUtil.Int32,
                                         Projections.Property("code")), 2);
             var query =
                 repository.Session.QueryOver<Cate>().Where(filter1).List();
             Assert.IsTrue(query.Count > 0);

Однако, были ошибки:

NHibernate.HibernateException: текущий диалект NHibernate.Dialect.MsSql2008Dialect не поддерживает функцию: LEN

Как я могу использовать в Nhibernate SQLServer2008 функции Len?

Ответы [ 2 ]

5 голосов
/ 12 февраля 2012

Используйте length вместо len. Вот как это прописано на диалекте.

0 голосов
/ 12 февраля 2012

Вы должны зарегистрировать свою функцию либо в классе конфигурации

config.AddSqlFunction("len", new StandardSafeSQLFunction("len", NHibernateUtil.Int32, 1));

или для создания собственного диалекта

public class MyDialect : MsSql2008Dialect
{
    public MyDialect()
    {
        RegisterFunction("len", new StandardSafeSQLFunction("len", NHibernateUtil.Int32, 1));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...