je le scénario suivant dans NHibernate (désolé pour le foiré XML, mais l'éditeur de texte a été « me aide » un peu trop alors que je tentais de le copier dans ;-))sac NHibernate question requête
<class name="TestApp.Components.User,TestApp.Components" table="Users">
<id name="Id" column="UserId" type="Int32" unsaved-value="0">
<generator class="native"></generator>
</id>
<property name="UserName" type="string" length="100" not-null="false"/>
<bag name="Groups" table="User_Group" lazy="true" >
<key column="UserId"></key>
<many-to-many class="Group" column="GroupId" />
</bag>
<class>
Je dois être capable d'écrire une requête pour renvoyer tous les utilisateurs qui se trouvent dans une collection de groupes.
Je veux essentiellement l'instruction SQL suivante pour exécuter:
select distinct username from users u, user_group ug
WHERE u.userid = ug.userid
AND (ug.groupid = 1 OR ug.groupid = 2 OR ug.groupid = 3)
Je sais que je peux le faire en HQL, mais je veux le faire en utilisant l'interface ICriteria.
var session = sessionManager.GetSession();
var items = session.CreateCriteria(typeof(User));
ICriterion criterion = null;
foreach (var groupid in Groups)
{
ICriterion tempCriterion = Restrictions.Eq("Groups.GroupId", groupid);
criterion = criterion == null ? tempCriterion : Restrictions.Or(criterion, tempCriterion);
}
items.Add(criterion);
J'ai essayé ci-dessus, mais il les erreurs, et je ne peux pas à comprendre ce que je suis absent. dans la requête. Est-ce que quelqu'un peut me diriger dans la bonne direction en ce qui concerne la façon dont j'ai besoin de structurer cette requête.
Merci, Max Schilling