指定的包含路径无效。实体类型''不会声明名称为''的导航属性。

时间:2014-09-22 10:15:18

标签: asp.net-mvc-4 entity-framework-5

我想知道你是否可以提供帮助。当我拨打.Include()时,我收到了上述错误。当我加入tblMemberships时,它会中断。

this.dbContext.Configuration.LazyLoadingEnabled = false;
List<tblCustomerInfo> customers = this.dbContext.tblCustomerInfoes.Include("tblUsers").Include("tblMemberships").ToList();

原因是因为tblCustomerInfotblMemberships之间的导航属性不存在。 tblUsers是其他两个表之间的链接。

Customer -- 1:* -- User -- 1:* -- Membership

(抱歉,不能将图片作为我的声誉&lt; 10)。

我的问题是:

  1. 如果要包含tblMemberships,我需要做什么?
  2. 这是一种检索数据的推荐方法,还是应该将其分解为两个查询?或者设计完全是垃圾?
  3. 我正在使用EF5,ASP .NET MVC 4

    请告知。谢谢。

1 个答案:

答案 0 :(得分:3)

当你编写这样的代码时:

db.ParentTable
    .Include("ChildTable")
    .Include("ChildOfChildTable");

您说的是ChildTable中包含ParentTable所有关键字的所有条目,并且还包括ChildOfChildTable中所有与ParentTable关联的条目。相反,您需要告诉实体框架ChildOfChildTable在层次结构中位于ChildTable之下,如下所示:

db.ParentTable
    .Include("ChildTable.ChildOfChildTable");

所以这意味着你的代码应该是:

this.dbContext.Configuration.LazyLoadingEnabled = false;
List<tblCustomerInfo> customers = this.dbContext.tblCustomerInfoes
                                      .Include("tblUsers.tblMemberships")