Ограничения nhibernate. Eq и пустой указатель

Advertisements advertisements = NHibernateSession.CreateCriteria(typeof(Advertisements))
                    .Add(Restrictions.Eq(AdvertisementsProperties.Price.ToString(), price))
                    .Add(Restrictions.Eq(AdvertisementsProperties.HollidayDuration.ToString(), hollidayDuration))
                    .Add(Restrictions.Eq(AdvertisementsProperties.Name.ToString(), name))
                    .Add(Restrictions.Eq(AdvertisementsProperties.Description.ToString(), description))
                    //.Add(Restrictions.Eq(AdvertisementsProperties.DepartureDate.ToString(), departureDate))
                    .Add(Restrictions.Eq(AdvertisementsProperties.City.ToString(), city))
                    .Add(Restrictions.Eq(AdvertisementsProperties.Area.ToString(), area))
                    .Add(Restrictions.Eq(AdvertisementsProperties.Country.ToString(), country))
                    .Add(Restrictions.Eq(AdvertisementsProperties.Agency.ToString(), agency))
                    .UniqueResult<Advertisements>();

но город, область или страна могут быть пустыми. Как я могу сравнить пустой указатель в DB с nhibernate?

9
задан senzacionale 1 August 2010 в 07:40
поделиться

2 ответа

public AbstractCriterion EqOrNull(string property, object value) {
    if (value == null)
        return Restrictions.IsNull(property);
    return Restrictions.Eq(property, value);
}

Например:

session.CreateCriteria<Advertisements>()
       .Add(EqOrNull(AdvertisementsProperties.City.ToString(), city));

См. Также HHH-2951

15
ответ дан 4 December 2019 в 10:03
поделиться
session.CreateCriteria<Advertisements>()
       .Add(Expression.Or(
                 Expression.Eq("AdvName", "Cool Advertisement"),
                 Expression.IsNull("AdvName"))
        ).List<Advertisements>();
6
ответ дан 4 December 2019 в 10:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: