在我的数据库中,我有一个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对象列表。我该怎么做?