次のようなクエリを実行するときがあるかどうか疑問に思っています。
var documentId = report.DocumentId;
return db.Documents.Find(documentId);
virtual/nav プロパティを設定してこれを行うよりも良いか悪いか:
return report.Document
DocumentId はそのテーブルの PK です。
それらは同じものですか?
次のようなクエリを実行するときがあるかどうか疑問に思っています。
var documentId = report.DocumentId;
return db.Documents.Find(documentId);
virtual/nav プロパティを設定してこれを行うよりも良いか悪いか:
return report.Document
DocumentId はそのテーブルの PK です。
それらは同じものですか?
あなたが求めているのがレポートに関連するドキュメントであれば、そうしない理由はないと思いますreport.Document
. 両方のオプションで同じクエリを実行する必要があります。いくつかの利点を提供する可能性のあるあなたができることは、次を使用することInclude
です:
db.Reports.Include(x => x.Document).First(report => report.Id == id)
これにより、レポートとその関連ドキュメントを 1 回のクエリで取得できます。つまり、コードが に到達するたびにドキュメントが遅延ロードされることはありませんreport.Document
。