6

Tengo el siguiente problema
Básicamente tengo los 2 fragmentos a continuación:Nhibernate no pudo resolver excepción propiedad al utilizar QueryOver, trabaja en queryAll

var contactAssociation = 
    session.QueryOver<ContactAssociation>(() => contactAssociationAlias) 
     .Where(() => 
      contactAssociationAlias.Contact.ID == careGiverId && 
      contactAssociationAlias.Client.ID == clientKey) 
     .Where(() => 
      contactAssociationAlias.AclRole.RoleName == "Care Giver") 
     .SingleOrDefault(); 

y

var contactAssociation = session.Query<ContactAssociation>() 
    .Where(cr => 
     cr.Contact.ID == careGiverId 
     && cr.Client.ID == clientKey) 
    .Where(cr => 
     cr.AclRole.RoleName == "Care Giver") 
    .SingleOrDefault(); 

la segunda se trabaja el primero genera este error:

Message=could not resolve property: AclRole.RoleCode of: 
SL.STAdmin.DAL.ContactAssociation 

¿Alguien sabe por qué es esto? Gracias de antemano

Respuesta

14

Necesita especificar una unión en la primera consulta. El proveedor de LINQ en la segunda consulta lo hace automáticamente por usted.

session.QueryOver<ContactAssociation>(() => contactAssociationAlias) 
    .Where(() => 
     contactAssociationAlias.Contact.ID == careGiverId && 
     contactAssociationAlias.Client.ID == clientKey) 
    .JoinQueryOver(() => contactAssociationAlias.AclRole) 
     .Where(a => a.RoleName == "Care Giver") 
    .SingleOrDefault(); 
Cuestiones relacionadas