1

最近EF4.3を使い始めました。

リクエストごとに取得するデータがいくつかあります-ページ構成データは一例です。このデータはデータベースから取得します。

最近までContext.items、リクエスト全体でこのデータを永続化できるため、これを保存していました。

私が持っている質問は、追跡で EF を使用しているので (リクエストごとに使用しています)、理論的には、ページ構成は最初にフェッチされたときにキャッシュされる必要があるため、それ以降の呼び出しは安価になるはずです。とは比較にならないかもしれませんがcontext.items

これは事実ですか、それとも何か不足していますか?

4

1 に答える 1

1

を使用してデータをクエリするObjectSet/DbSetと、以前に同じデータをクエリしたことがある場合でも、常にデータベースにヒットします。キャッシュされた項目からデータを取得するには、別のクエリ手法を使用する必要があります。

API を使用している場合は、次を使用しDbContext/DbSetてキャッシュをクエリできます。

var items = dbContext.Products.Local.Where(/**/);

の場合ObjectContext

var items = objectContext.ObjectStateManager
        .GetObjectStateEntries(EntityState.Unchanged | EntityState.Added | EntityState.Modified)
        .Where(e => e.Entity is Product)....;
于 2012-09-12T10:44:06.963 に答える