Search code examples
c#nhibernatelinq-to-nhibernatequeryover

Nhibernate could not resolve property exception when using QueryOver, works on QueryAll


I have the following problem
Basically I have the 2 snippets below:

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

and

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

the second one works the first one outputs this error:

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

Does anyone know why this is? Thank you in advance


Solution

  • You need to specify a Join in the first query. The LINQ provider in the second query does it automatically for you.

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