2011-08-16 31 views
5

Cách thực hiện tham gia sau đây để trả lại Người dùng có quyền truy cập vào Công ty được cấp id công ty. Vấn đề là không có mối quan hệ rõ ràng sử dụng một đối tượng tài giữa UserAccess và User họ chỉ đơn giản là tham gia vào Username sở hữu chuỗi:NHibernate QueryOver cách tham gia vào mối quan hệ không được khai báo

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

Xem thêm http://stackoverflow.com/questions/6378224/nhibernate-queryover-to-join-unrelated-entities –

Trả lời

11

có thể được thực hiện với một subquery

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 'nó lớn người đàn ông tốt của tôi –

Các vấn đề liên quan