如何使用NHibernate Criteria和Lambda Extensions查询多对多关系?

时间:2010-03-11 18:49:48

标签: nhibernate hql criteria

在我的数据库中,我有一个Person表和一个Event表(派对,会议和& c。)。这种多对多关系通过邀请表表示。每个人都可以有很多邀请。每个活动也可以有很多邀请。

如果我想要一个邀请Person的事件列表,我可以使用这个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 Extensions编写此查询?

如果我做了类似的事情:

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

然后只给我一个Invitation对象列表,通过它我必须循环以获取每个对象的事件。我宁愿从查询中获得一个Event对象列表。我该怎么做?

0 个答案:

没有答案