我一直在网上搜索,找不到如何使用nhibernate 3.0查询的示例 例如,我想在queryover的where子句中使用字符串函数 例如:
var item = Query.Where(x => x.Name.ToLower() == name.ToLower()).FirstOrDefault();
但这不起作用,因为nhibernate无法理解ToLower,那么如何以可能的方式扩展方言?
答案 0 :(得分:9)
session.QueryOver<Foo>()
.Where(Restrictions.Eq(
Projections.SqlFunction("lower", NHibernateUtil.String,
Projections.Property<Foo>(x => x.Name)),
name.ToLower()))
应该像where lower(Name) = @p0
答案 1 :(得分:0)
我相信它至少在我使用的版本中有效(版本3.0.0.4000)...下面是我的例子......
var reasons = _session.Query<Reason>();
var myReason = (from r in reasons
where r.IsCritical
&& r.ReasonCode.ToUpper() == reasonCode.ToUpper()
select r).FirstOrDefault();
试一试,让我知道它是否适合你...