Коллекция Критериев NHibernate содержит - PullRequest
10 голосов
/ 25 августа 2009

У меня есть отношения родитель / ребенок, сопоставленные с набором «многие ко многим».

public class Parent
{
    public ISet<Child> Children { get; set; }
}

public class Child {}

public class ParentMap : ClassMap<Parent>
{
    HasManyToMany(x => x.Children)
        .AsSet();
}

Как мне написать запрос, чтобы выбрать всех родителей, которые содержат данного ребенка? Я бы предположил, что это будет что-то вроде этого, но этот API не существует:

Session.CreateCriteria<Parent>()
   .Add(Expression.Contains("Children", child)
   .List<Parent>();

Я не могу нигде найти ответ. Мой мозг сегодня не полностью функционирует, и Google до сих пор меня подводил.

1 Ответ

9 голосов
/ 25 августа 2009

Как насчет этого?

Session.CreateCriteria<Parent>()
   .CreateCriteria("Children")
   .Add(Expression.Eq("Id", child.Id)
   .List<Parent>();

или

Session.CreateCriteria<Parent>()
   .CreateCriteria("Children")
   .Add(Expression.In("Id", child.Id)
   .List<Parent>();

так что вы можете передать массив идентификаторов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...