2012-07-25 86 views
0

我有三個表:如何使用nHibernate中的IQueryOver連接從多個表中獲取記錄?

User -> UserId, username 

UserGroup -> UserGroupId, GroupName 

UserGroupMember -> UserId, UserGroupId 

我創建使用NHibernate相應的映射,但是當我嘗試搜索的組名和retreive屬於特定組的用戶列表中,我收到的錯誤,而不是能夠檢索結果。

有人可以幫我解決這個問題。

+0

你能張貼您的映射,您要使用查詢?這看起來像一個簡單的多對多關係。 – 2012-07-25 09:08:55

回答

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' 
相關問題