C# NHibernate-按父id选择子项
我有一个表示事件的对象。这次活动邀请了许多人参加。看起来是这样的:C# NHibernate-按父id选择子项,c#,linq,nhibernate,C#,Linq,Nhibernate,我有一个表示事件的对象。这次活动邀请了许多人参加。看起来是这样的: Event { ID, Name, Invitee[] } Invitee { UserID, Status } 在映射中,事件有许多被邀请者 我希望使用NHibernate和Linq,通过事件ID和用户ID获得被邀请者状态,而不加载整个事件。 有什么想法吗?假设您希望使用Linq(而不是HQL),并且不想加载整个事件: 如果您希望避免复杂性,假设您的数据库在Invetee表中已经有一
Event
{
ID,
Name,
Invitee[]
}
Invitee
{
UserID,
Status
}
在映射中,事件有许多被邀请者
我希望使用NHibernate和Linq,通过事件ID和用户ID获得被邀请者状态,而不加载整个事件。
有什么想法吗?假设您希望使用Linq(而不是HQL),并且不想加载整个事件:
如果您希望避免复杂性,假设您的数据库在Invetee表中已经有一个EventId列,那么您只需向Invetee添加一个事件属性并将其双向映射即可(它不应更改数据库中的任何内容,并使您的查询更简单)。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();
var查询=(
从session.Query()中的e
来自e.i.受邀者
其中e.ID=1,i.UserID=2
选择i.状态
);
var status=query.FirstOrDefault();
我向Invitee对象添加了一个事件映射,效果非常好。谢谢