何时使用EF导航属性而非手动索引查询?

时间:2013-09-28 23:11:32

标签: entity-framework ef-code-first

我想知道是否有时间执行这样的查询:

var documentId = report.DocumentId;
return db.Documents.Find(documentId);

比设置虚拟/导航属性并执行此操作更好或更差:

return report.Document

其中DocumentId是该表上的PK。

它们是一样的吗?

1 个答案:

答案 0 :(得分:1)

我会说,如果这是与您之后的报告相关的文档,则没有理由不执行report.Document。您的选项都应该执行相同的查询。您可以做些什么可以提供一些好处是使用Include

db.Reports.Include(x => x.Document).First(report => report.Id == id)

这将允许您在单个查询中检索报告及其相关文档。即,只要您的代码到达report.Document,文档就不会延迟加载。