3

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

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

2 回答 2

3

NHibernates sql 方言不支持 IsNull,但 Coalesce 支持,并且对于两个参数来说是相同的。

你可以做

Projections.SqlFunction("Coalesce", NHibernateUtil.String,
    Projections.Property("Name"), Projections.Constant("UNKNOWN"))

得到一个相当于 IsNull() 的投影。

于 2014-05-21T15:23:04.123 回答
-1

在 ICriteria 中,NHibernate.Criterion.Restrictions.IsNull(PropertyName)我认为您也可以在 QueryOver 中使用它 -

var qOver = QueryOver.Of<MyEntity>(() => meEntity);

qOver = qOver.Where(Restrictions.IsNull(PropertyName));
于 2013-07-14T10:20:37.583 回答