我有一个代表一个事件的对象。该活动有受邀者。它看起来像这样:
Event
{
ID,
Name,
Invitee[]
}
Invitee
{
UserID,
Status
}
在映射中,事件为HasMany受邀者。
我希望通过事件ID和UserID获取被邀请者状态,而无需加载整个事件,使用NHibernate和Linq。 有什么想法吗?
答案 0 :(得分:2)
假设您希望使用Linq(而不是HQL)并且您不想加载整个事件:
如果您希望避免复杂性,假设您的数据库已经在Invetee表中有一个EventId列,您只需向Invetee添加一个Event属性并以两种方式映射它(它不应该更改数据库中的任何内容并使您'重新查询更简单)。
答案 1 :(得分:1)
LINQ就像这样
var query = (
from e in session.Query<Event>()
from i in e.Invitee
where e.ID = 1 and i.UserID = 2
select i.Status
);
var status = query.FirstOrDefault();