我需要以下条件(在SQL中)来填充结果集中的特定字段:
CASE
WHEN M.ID_ENTIDAD = m.ID_ENTIDAD_VENTA then EC.CLAVE_ENTIDAD
END AS Contraparte }
如果我使用
var contraparte = Projections.Conditional(
Restrictions.EqProperty("EntidadOwner", "EntidadVenta"),
Projections.Property("enc.CvePrincipalMiembro"),
null);
返回错误。
如果我使用:
*var contraparte = Projections.Conditional(
Restrictions.EqProperty("EntidadOwner", "EntidadVenta"),
Projections.Property("enc.CvePrincipalMiembro"),
Projection.Constant(a constant value);*
显然,如果没有ELSE部分,则无法使用此条件。即没有ELSE部分,nhibernate无法生成CASE。
有可能这样做吗?请帮帮我!!!
由于
答案 0 :(得分:2)
确定。我发现了自己的回应。
我采取了两项行动:
一,在查询中使用的地图类中添加以下虚拟字段:
Map(x => x.Dummy).Nullable().Formula("NULL");
第二:我使用以下代码修改了条件投影:
var contraparte = Projections.Conditional(
Restrictions.EqProperty("EntidadOwner", "EntidadVenta"),
Projections.Property("enc.CvePrincipalMiembro"),
Projections.Property("Dummy"));
就是这样!我希望这能帮助另一个有同样问题的人。