質問: dbContext.Entity .Where(c => ids.Contains(c.PrimaryKey)) .ToArray(); ``` 質問は、私のデータベースに向かう前にキャッシングをチェックすることを知っているほどスマートですか?たとえば、エンティティ1-4がすでにコンテキストにアタッチされている場合は、dbクエリが作成されていないはずです。
回答: 暗黙のうちに。 `Where()`は常にデータベースに問い合わせます。明示的にキャッシュを照会するには、 **.Local**を使用する必要があります。 `dbContext.Entity.Local.Where(...` これはデータベースにヒットしませんが、キャッシュされている/ロードされているエンティティのみを返します。 知っておくべきこと:クエリを表示するには、次のようなLog関数を定義します。 `dbContext.Database.Log = Console.WriteLine;`