2011-08-16 20 views
5

Geri dönmek için aşağıdaki katılmayı nasıl gerçekleştirebilirsiniz Şirket kimliğine sahip bir Şirkete erişimi olan kullanıcılar. sorun basitçe dize mülkiyet adı üzerinde katılmak UserAccess ile kullanıcı arasındaki bir User nesnesi kullanılarak açık bir ilişki yoktur geçerli: /:NHibernate QueryOver bildirilmemiş ilişkide nasıl katılacağı hakkında bilgi edinin

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

Ayrıca bkz http alt sorgu ile yapılabilir /stackoverflow.com/questions/6378224/nhibernate-queryover-to-join-unrelated-entities –

cevap

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 'büyük erkeğim –

İlgili konular