Est-il possible de joindre 3 ICriteria avec l'instruction OR pas ET?joindre 3 icriteria avec ou
ICriteria criteriaCity = NHibernateSession.CreateCriteria(typeof(Advertisements))
.CreateCriteria(AdvertisementsProperties.City.ToString(), "city").
Add(Restrictions.Or(
Restrictions.Like("city." + CitiesProperties.Name.ToString(), text, MatchMode.Anywhere),
Restrictions.Like("city." + CitiesProperties.SlovenianName.ToString(), text, MatchMode.Anywhere)));
ICriteria criteriaArea = NHibernateSession.CreateCriteria(typeof(Advertisements))
.CreateCriteria(AdvertisementsProperties.Area.ToString(), "area").
Add(Restrictions.Or(
Restrictions.Like("area." + AreasProperties.Name.ToString(), text, MatchMode.Anywhere),
Restrictions.Like("area." + AreasProperties.SlovenianName.ToString(), text, MatchMode.Anywhere)));
ICriteria criteriaCountry = NHibernateSession.CreateCriteria(typeof(Advertisements))
.CreateCriteria(AdvertisementsProperties.Country.ToString(), "country").
Add(Restrictions.Or(
Restrictions.Like("country." + CountriesProperties.Name.ToString(), text, MatchMode.Anywhere),
Restrictions.Like("country." + CountriesProperties.SlovenianName.ToString(), text, MatchMode.Anywhere)));
Cordialement
Si j'essaie comme ceci:
var criteria= NHibernateSession.CreateCriteria<Advertisements>();
criteria.CreateCriteria(AdvertisementsProperties.City.ToString(), "City");
criteria.CreateCriteria(AdvertisementsProperties.Area.ToString(), "Area");
criteria.CreateCriteria(AdvertisementsProperties.Country.ToString(), "Country");
var dis = Restrictions.Disjunction();
dis.Add(Restrictions.Like("City.Name", text, MatchMode.Anywhere));
dis.Add(Restrictions.Like("City.SlovenianName", text, MatchMode.Anywhere));
dis.Add(Restrictions.Like("Area.Name", text, MatchMode.Anywhere));
dis.Add(Restrictions.Like("Area.SlovenianName", text, MatchMode.Anywhere));
dis.Add(Restrictions.Like("Country.Name", text, MatchMode.Anywhere));
dis.Add(Restrictions.Like("Country.SlovenianName", text, MatchMode.Anywhere));
criteria.Add(dis);
Je ne suis jamais aucun résultat. J'utilise juste
var criteria = NHibernateSession.CreateCriteria(); criteria.CreateCriteria (AdvertisementsProperties.City.ToString(), "Ville"); criteria.CreateCriteria (AdvertisementsProperties.Country.ToString(), "Country");
var dis = Restrictions.Disjunction();
dis.Add(Restrictions.Like("City.Name", text, MatchMode.Anywhere));
dis.Add(Restrictions.Like("City.SlovenianName", text, MatchMode.Anywhere));
dis.Add(Restrictions.Like("Country.Name", text, MatchMode.Anywhere));
dis.Add(Restrictions.Like("Country.SlovenianName", text, MatchMode.Anywhere));
criteria.Add(dis);
puis fonctionne. Mais le nombre de rangées est différent alors
var criteria= NHibernateSession.CreateCriteria<Advertisements>();
criteria.CreateCriteria(AdvertisementsProperties.Country.ToString(), "Country");
var dis = Restrictions.Disjunction();
dis.Add(Restrictions.Like("Country.Name", text, MatchMode.Anywhere));
dis.Add(Restrictions.Like("Country.SlovenianName", text, MatchMode.Anywhere));
criteria.Add(dis);
Avez-vous une idée pourquoi? Je ne comprends pas ...
Cordialement
Veuillez ne pas ajouter de nouvelles réponses; utilisez des commentaires ou modifiez votre question originale à la place. Comme je l'ai dit dans ma réponse, ce que vous faites avec "city" n'est pas clair pour moi. + CitiesProperties.Name.ToString() alors j'ai utilisé City.Name à la place. –