2011-08-16 32 views
5

如何執行以下加入以返回有權訪問給定公司ID的公司的用戶。 問題是存在使用UserAccess和用戶之間的用戶對象,他們只需在字符串屬性名參加沒有明確的關係:/:NHibernate QueryOver如何加入非聲明關係

User(Username, Name) 
UserAccess(Username, Company) 
Company(Id) 

Session.QueryOver<Company>() 
     .Where(c => c.Id == companyId) 
     .JoinQueryOver<UserCompanyAccess>(u => u.UserAccessList) 
     .JoinQueryOver<User>(u => **Nope no property, just a string** 
+0

參見HTTP來完成/stackoverflow.com/questions/6378224/nhibernate-queryover-to-join-unrelated-entities –

回答

11

可以使用子查詢

var subquery = QueryOver.Of<Company>() 
    .Where(c => c.Id == companyId) 
    .JoinQueryOver<UserCompanyAccess>(u => u.UserAccessList) 
    .Select(uca => uca.UserName); 

var users = session.QueryOver<User>() 
    .WithSubquery.WhereProperty(u => u.Name).In(subquery) 
    .List(); 
+0

Lovin'it large my good man –