如何使用NHibernate(最好是QueryOver语法)来获取以下SQL
SELECT this_.Name as_, count(IsNull(this_.Name , 'UNKNOWN') ) as NameCount
FROM...
答案 0 :(得分:3)
NHibernates sql方言不支持IsNull,但是Coalesce是两个参数的相同内容。
你可以做到
Projections.SqlFunction("Coalesce", NHibernateUtil.String,
Projections.Property("Name"), Projections.Constant("UNKNOWN"))
获得与IsNull()相当的投影。
答案 1 :(得分:-1)
在ICriteria中有NHibernate.Criterion.Restrictions.IsNull(PropertyName)
我认为你也可以在QueryOver中使用它 -
var qOver = QueryOver.Of<MyEntity>(() => meEntity);
qOver = qOver.Where(Restrictions.IsNull(PropertyName));