NHibernate相当于SQL IsNull(列,'defaultValue')

时间:2013-07-12 20:09:45

标签: sql nhibernate queryover isnull

如何使用NHibernate(最好是QueryOver语法)来获取以下SQL

SELECT this_.Name as_, count(IsNull(this_.Name , 'UNKNOWN') ) as NameCount
FROM... 

2 个答案:

答案 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));