流畅的NHibernate Projection.Conditional只有当真正的部分

时间:2012-01-09 20:14:25

标签: nhibernate fluent-nhibernate

我需要以下条件(在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。

有可能这样做吗?请帮帮我!!!

由于

1 个答案:

答案 0 :(得分:2)

确定。我发现了自己的回应。

我采取了两项行动:

一,在查询中使用的地图类中添加以下虚拟字段:

Map(x => x.Dummy).Nullable().Formula("NULL");

第二:我使用以下代码修改了条件投影:

var contraparte = Projections.Conditional(
                        Restrictions.EqProperty("EntidadOwner", "EntidadVenta"),
                        Projections.Property("enc.CvePrincipalMiembro"),
                        Projections.Property("Dummy"));

就是这样!我希望这能帮助另一个有同样问题的人。