我想知道是否有时间执行这样的查询:
var documentId = report.DocumentId;
return db.Documents.Find(documentId);
比设置虚拟/导航属性并执行此操作更好或更差:
return report.Document
其中DocumentId是该表上的PK。
它们是一样的吗?
答案 0 :(得分:1)
我会说,如果这是与您之后的报告相关的文档,则没有理由不执行report.Document
。您的选项都应该执行相同的查询。您可以做些什么可以提供一些好处是使用Include
:
db.Reports.Include(x => x.Document).First(report => report.Id == id)
这将允许您在单个查询中检索报告及其相关文档。即,只要您的代码到达report.Document
,文档就不会延迟加载。