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

mais la ville, la zone ou le pays peut être nul. Comment puis-je comparer null dans DB avec nhibernate?nhibernate Restrictions.Eq et null

Répondre

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

.: par exemple

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

Voir aussi HHH-2951

+0

Une autre façon de l'écrire: retour (valeur == null)? Restrictions.IsNull (propriété): Restrictions.Eq (propriété, valeur); –

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