Как я могу запросить через отношение многие ко многим, используя NHibernate Criteria и Lambda Extensions? - PullRequest
1 голос
/ 11 марта 2010

В моей базе данных есть таблица Person и таблица Event (вечеринки, встречи и т. Д.). Это отношение многие ко многим представлено через таблицу приглашений. Каждый человек может иметь много приглашений. Каждое событие может также иметь много приглашений.

Если я хочу получить список событий, на которые приглашен человек, я могу использовать этот запрос HQL:

IQuery query = Session.CreateQuery("SELECT i.Event from Invitation i where i.Person = :p");
query.SetParameter("p", person);
return query.List<Person>();

Как мне написать этот запрос с критериями NHibernate и расширениями Lambda?

Если бы я сделал что-то вроде:

ICriteria criteria = Session.CreateCriteria<Invitation>()
    .Add(SqlExpression.CriterionFor<Invitation>(i => i.Person == person));
return criteria.List<Invitation>();

тогда это только дает мне список объектов Приглашения, через который мне пришлось бы пройти цикл, чтобы получить Событие для каждого. Я бы предпочел список объектов Event из запроса. Как мне это сделать?

...