【问题标题】:EF 4.0 What should the path parameter supplied to Include() be?EF 4.0 提供给 Include() 的路径参数应该是什么?
【发布时间】:2012-08-18 07:28:40
【问题描述】:

当在我的 LINQ 中针对我的模型使用 Include() 时,我提供的路径参数应该是相关对象的名称还是导航属性的名称?

我问是因为同一张桌子与另一张桌子有不止一种关系。我在设计器中注意到相关表格的导航属性采用以下形式:

RelatedTable
RelatedTable1
...
RelatedTablen

延迟加载已关闭,因此我需要显式加载相关对象。我只想要通过导航属性相关的对象:“RelatedTable1”我尝试提供导航属性名称(即“RelatedTable1”)以包含,即:

from row in Table.Include("RelatedTable1")
select row

它有效!这表明路径参数应该是导航属性的名称。但是我也尝试了相关实体的名称,即:

from row in Table.Include("RelatedTable")
select row

它也有效!我只是想了解发生了什么..

(LazyLoading 已关闭,如果我不使用 Include(),则不会获取相关信息)。

【问题讨论】:

  • 导航属性的名称。当然可以。您同时拥有RelatedTableRelatedTable1 作为导航属性。但是连接的字段是不同的。
  • 谢谢 - 你说得对,我不应该感到惊讶,因为应该得出结论,它一定是正在使用的导航属性。我仍然认为这是文档应该说明的内容!

标签: entity-framework-4 linq-to-objects


【解决方案1】:

您可以使用导航属性的名称,也可以将它们链接起来like this

db.Tables.Include("RelatedTable.RelatedTable2");

或者如果你更喜欢强类型,你可以include as a lambda:

db.Tables.Include(x => x.RelatedTable);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    相关资源
    最近更新 更多