6

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

Joel
  • 7,401
  • 4
  • 52
  • 58
Para
  • 2,022
  • 5
  • 34
  • 73

1 Answers1

14

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();
Vadim
  • 17,897
  • 4
  • 38
  • 62