2010-08-01 8 views
7
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>(); 

pero la ciudad, el área o el país pueden ser nulos. ¿Cómo puedo comparar null en DB con nhibernate?nhibernate Restrictions.Eq and null

Respuesta

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

ej .:

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

Véase también HHH-2951

+0

Otra forma de escribirlo: retorno (valor == null)? Restrictions.IsNull (propiedad): Restrictions.Eq (propiedad, valor); –

5
session.CreateCriteria<Advertisements>() 
     .Add(Expression.Or(
       Expression.Eq("AdvName", "Cool Advertisement"), 
       Expression.IsNull("AdvName")) 
     ).List<Advertisements>(); 
Cuestiones relacionadas