在LINQ中对我的模型使用Include()
时,我提供的路径参数应该是相关对象的名称还是导航属性的名称?
我问,因为同一个表与同一个表有多个关系。我在设计器中注意到相关表的导航属性采用以下形式:
RelatedTable
RelatedTable1
...
RelatedTablen
延迟加载已关闭所以我需要显式加载相关对象。我只想要通过导航属性相关的对象:“RelatedTable1”我尝试将导航属性名称(即“RelatedTable1”)提供给Include,即:
from row in Table.Include("RelatedTable1")
select row
它有效!这表明path参数应该是Navigation属性的名称。但是,我也尝试了相关的实体名称,即:
from row in Table.Include("RelatedTable")
select row
它也有效!我只想要了解发生了什么......
(LazyLoading已关闭,如果我不使用Include(),则不会获取相关内容。)
答案 0 :(得分:1)
您可以使用导航属性的名称,也可以将它们链接起来like this:
db.Tables.Include("RelatedTable.RelatedTable2");
如果您更喜欢强烈打字,可以include as a lambda:
db.Tables.Include(x => x.RelatedTable);