我可以在NHibernate QueryOver中使用SQL函数吗?

Rub*_*iro 10 nhibernate queryover dialect

我一直在网上搜索,找不到如何使用nhibernate 3.0查询的例子.例如我想在queryover ex的where子句中使用字符串函数:

var item = Query.Where(x => x.Name.ToLower() == name.ToLower()).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为nhibernate无法理解ToLower,那么如何以这种方式扩展方言呢?

dot*_*joe 9

session.QueryOver<Foo>()
    .Where(Restrictions.Eq(
        Projections.SqlFunction("lower", NHibernateUtil.String, 
            Projections.Property<Foo>(x => x.Name)),
        name.ToLower()))
Run Code Online (Sandbox Code Playgroud)

应该让你像SQL一样 where lower(Name) = @p0