私はエンティティフレームワークのコードの最初のアプローチを使用してAsp.Net mvcプロジェクトを開発しています。しかし私は自分のアプリケーションのパフォーマンスを改善しようとしています。同じ条件に再度アクセスすると、Entity Frameworkがデータベースクエリを再度実行するかどうかはわかりません。下記の私のシナリオをご覧ください。Entity Frameworkは、すでに実行されたクエリに対してデータベースクエリを再度実行しますか?
var item = context.Items.FirstOrDefault();// Database query will be run for this
var start = item.Promotions.FirstOrDefault().Start; // Another query will be run for this
var end = item.Promotions.FirstOrDefault().End; //Will another query be run again? Same query is run again for this
var price = item.Promotions.FirstOrDefault().Price; //Here also
コードでわかるように、新しいクエリが実行されてプロモーション開始日が取得されます。しかし、私が終了日を取得すると、データベースは同じクエリであってもクエリを再度実行します。説明してください。私はそれを混乱させる。
だから私はこのcontext.Items.Include(x => x.Promotions)のように取得します。次に、このようなアイテムを取得します。var item = items.FirstOrDefault()。 Uがitem.Promotions.FirstOrDefault()にアクセスすると、クエリは再び実行されますか? –
いいえデフォルトではアイテムに関連付けられたすべてのインスタンスが含まれます – cpoDesign
1対1の関係の場合はどうなりますか?例var item = context.items.FirstOrDefault(); var start = item.Promotion.Start; var end = item.Promotion.End。ご覧のとおり、私は変数に代入してキャッシュしませんでした。プロモーションの終了日を取得すると、もう一度別のクエリが実行されますか? –