Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NHibernate-按父id选择子项_C#_Linq_Nhibernate - Fatal编程技术网

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对象添加了一个事件映射,效果非常好。谢谢