Свободная проекция NHibernate. Условно только при истинной части - PullRequest
1 голос
/ 10 января 2012

Мне нужно следующее условие (в 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.то есть nhibernate не может генерировать CASE без ELSE части.

Возможно ли это сделать ??Пожалуйста, помогите мне !!!

Спасибо

1 Ответ

2 голосов
/ 24 января 2012

Хорошо. Я нашел себе ответ.

Я предпринял два действия:

Во-первых, добавьте следующее фиктивное поле в классе карты, используемом в вашем запросе:

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

Второе: я изменил условную проекцию следующим кодом:

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

Это было все! Я надеюсь, что это поможет другим людям с той же проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...