我有一个代表事件的对象。活动有受邀者。它看起来像这样:
Event
{
ID,
Name,
Invitee[]
}
Invitee
{
UserID,
Status
}
在映射中,事件 HasMany 受邀者。
我想通过事件 ID 和用户 ID 获得被邀请者状态,而不加载整个事件,使用 NHibernate 和 Linq。有任何想法吗?
我有一个代表事件的对象。活动有受邀者。它看起来像这样:
Event
{
ID,
Name,
Invitee[]
}
Invitee
{
UserID,
Status
}
在映射中,事件 HasMany 受邀者。
我想通过事件 ID 和用户 ID 获得被邀请者状态,而不加载整个事件,使用 NHibernate 和 Linq。有任何想法吗?
假设您希望使用 Linq(而不是 HQL)并且您不想加载整个事件:
如果您希望避免复杂性,假设您的数据库在 Invetee 表中已经有一个 EventId 列,您只需将一个 Event 属性添加到 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();