2011-08-16 10 views
5

Jak wykonać poniższe dołączenie, aby zwrócić użytkowników, którzy mają dostęp do firmy o identyfikatorze firmy. Problemem jest to, nie ma wyraźnego związku z użyciem obiektu użytkownika pomiędzy UserAccess i Użytkownika po prostu dołączyć na właściwości String Nazwa użytkownika:NHibernate QueryOver jak dołączyć do nie zadeklarowanej relacji

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

Zobacz również http://stackoverflow.com/questions/6378224/nhibernate-queryover-to-join-unrelated-entities –

Odpowiedz

11

można zrobić z podkwerendzie

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 'to duży mój dobry człowiek –

Powiązane problemy