Nhibernate не может разрешить исключение свойства при использовании QueryOver, работает на QueryAll - PullRequest
6 голосов
/ 15 июня 2011

У меня следующая проблема
В основном у меня есть 2 фрагмента ниже:

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

и

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

второй работает первый выводит эту ошибку:

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

Кто-нибудь знает, почему это так? Заранее спасибо

1 Ответ

14 голосов
/ 16 июня 2011

Вам необходимо указать Join в первом запросе. Поставщик LINQ во втором запросе делает это автоматически для вас.

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