2012-02-27 11 views
4

Entity Framework 4.0では、単一のLINQクエリのオブジェクトキャッシュをバイパスする方法はありますか?単一のEntity Framework 4.0クエリでキャッシュをバイパスする方法はありますか。

私はクエリを実行することができ、そのオブジェクトが要求の前に取得されキャッシュに格納されていても、データベースから絶対最新のものを取得したいと考えています。

答えて

3

IDマップからすでにマテリアライズされたエンティティを使用する代わりに、結果セットのマテリアライゼーションを強制するようにクエリまたはオブジェクトセットを構成する必要があります。

context.YourObjectSet.MergeOption = MergeOption.OverwriteChanges; 
// now execute the query as many times as you want 

または

var query = ...; 
((ObjectQuery<YourEntity>)query).MergeOption = MergeOption.OverwriteChanges; 
+0

+1ことを知って良いです。 MergeOptionは、キャッシュのオーバーライドを強制するための予期しない名前ですが、うまくいきます。私はRefreshMode.StoreWinsでObjectContext.Refreshを試していましたが、期待通りに動作していないことが分かりませんでした。 –

+0

それは私のために働かなかった(EF6.0)。 MergeOptionプロパティが見つかりませんでした。私はEFにいくつかの大きな変化があったと思う。この回答は役に立ちました:http://stackoverflow.com/a/4911591/1131855 –

+0

@MaximEliseev: 'MergeOption'はオリジナルのObjectContext APIの機能です。より新しいAPIを使用しています。 –

関連する問題