【问题标题】:Nhibernate could not resolve property exception when using QueryOver, works on QueryAll使用 QueryOver 时,Nhibernate 无法解析属性异常,适用于 QueryAll
【发布时间】:2011-06-15 18:12:56
【问题描述】:

我有以下问题
基本上我有下面的 2 个 sn-ps:

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

有人知道这是为什么吗? 提前谢谢你

【问题讨论】:

    标签: c# nhibernate linq-to-nhibernate queryover


    【解决方案1】:

    您需要在第一个查询中指定一个 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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多