2011-08-16 10 views
5

Cómo hacer la siguiente unión para devolver Usuarios que tienen acceso a una empresa con una identificación de empresa. El problema es que no hay relación explícita con un objeto de usuario entre UserAccess y usuario simplemente se unen en la propiedad de cadena Nombre de usuario:NHibernate QueryOver cómo unirse a una relación no declarada

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

Ver también http://stackoverflow.com/questions/6378224/nhibernate-queryover-to-join-unrelated-entities –

Respuesta

11

que se podría hacer con una subconsulta

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 'es grande mi buen hombre –

Cuestiones relacionadas