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部分,就不可能使用此Conditional。即nhibernate不能在没有ELSE部分的情况下生成CASE。

这是可能的吗??请帮帮我!!!

感谢

好的。我发现自己得到了回应。

我采取了两个行动:

首先,在查询中使用的映射类中添加以下伪字段:

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

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

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

仅此而已!我希望这能帮助另一个有同样问题的人。

最新更新