如何在nHibernate中使用IQueryOver的连接从多个表中获取记录?

时间:2012-07-25 08:10:13

标签: nhibernate

我有三张桌子:

User -> UserId, username

UserGroup -> UserGroupId, GroupName

UserGroupMember -> UserId, UserGroupId

我已经使用nHibernate创建了相应的映射,但是当我尝试搜索groupname并检索属于特定组的用户列表时,我收到错误而无法检索结果。

有人可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

我对您的问题不太确定,但我认为您想要选择具有特定名称的组的所有用户。

我会这样做:

var users = Session.QueryOver<UserGroupMember>()
      .Fetch(x => x.User).Eager
      .JoinQueryOver(x => x.UserGroup).Where(x => x.GroupName == groupName)
      .List().Select(x => x.User)

使用该查询,SQL将是这样的:

Select m.*, u.* 
from UserGroupMember m 
         inner join UserGroup g on m.UserGroupId=g.UserGroupId 
         inner join User u on m.UserId = u.UserId 
where g.GroupName='groupName'