2011-08-16 5 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-nrelatedententities –

答えて

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

ラヴィン 'それは私の善良な男 –

関連する問題