J'ai les classes mappées suivantes maintenant je ne peux pas comprendre un moyen de sélectionner toutes les transactions où p> je peux obtenir et Pour travailler en utilisant ce qui suit: p> Mais comment puis-je transformer cela en un ou plutôt un et. J'ai déjà utilisé la disjonctionnement, mais je ne peux pas sembler savoir comment ajouter des critères distincts, des restrictions seulement. P> p>
3 Réponses :
Je pense que vos options de NHibernate dépendent de la version de NHibernate que vous utilisez. em> disjonction = ou, conjonction = et p> Identique à cette question ici P> Jamie IDE vient de répondre plus en profondeur ... le gist de Cela va comme ceci: p>
Mais comment puis-je ajouter des objets imbriqués? Je n'ai pas besoin de restrictions sur une seule propriété, j'ai besoin d'une ou de 2 propriétés différentes (sur 2 sous-classes différentes)
Je suis désolé de ne pas avoir donné de détails ... 'Jamie Ide' a juste fait. Cela devrait être ce que vous voulez et ce que j'aurais dû dire. .Ajouter (restrictions.or (restrictions.eq ("objet1.property1", critèreValue), restriction.eq ("objet2.property3", critèreValue))
Essayez:
return session.CreateCriteria<Trade>() .CreateAlias("AccountFrom", "af") .CreateAlias("AccountTo", "at") .Add(Restrictions.Or( Restrictions.Eq("af.Company.CompanyId", companyId), Restrictions.Eq("at.Company.CompanyId", companyId))) .List<Trade>();
Utilisation de Linq à NHibernate:
var X = 0; // or whatever the identifier type. var hql = "from Trade trade where trade.AccountFrom.Company.ID = :companyId or trade.AccountTo.Company.ID = :companyID"; var result = Session.CreateQuery(hql) .SetParameter("companyId", X) .List<Trade>();