2012-02-20 15 views
2

SQL ServerデータベースへのEntity Framework呼び出しの結果セットを入力するドロップダウンリストがあります。現在、その呼び出しには20レコードが返されており、キャッシュの使用を検討しています。私は以前に特定のコントロールのためにキャッシングをセットアップしたことがありません。誰かがチュートリアルを教えてくれますか?小さなデータセットのために、これはまた過酷なことですか?SQL呼び出しのキャッシュ結果

+0

ASP.NET? WinForms? WPF? – BrokenGlass

+0

http://deanhume.com/Home/BlogPost/object-caching#net-4/37まともな記事 – Joe

答えて

3

これがASP.NETの場合、キャッシュを行う最も簡単な方法は、HttpContext.Current.Cacheオブジェクトを使用することです。これはあなたのコードでこれと同じように動作します。 more information on the Cache class on MSDNが見つかります。

if (HttpContext.Current.Cache.Get("ef_results") == null) 
{ 
    var results = null; // todo: get results from EF 
    HttpContext.Current.Cache.Add("ef_results", // cache key 
            results, // cache value 
            null, // dependencies 
            System.Web.Caching.Cache.NoAbsoluteExpiration, // absolute expiration 
            TimeSpan.FromMinutes(30)); // sliding expiration 
} 

myDropDown.DataSource = HttpContext.Current.Cache.Get("ef_results"); 

これはWPF/WinFormsのであれば、最も簡単な方法は、ちょうど上記と同じロジックを使用して、その静的フィールドにEFクエリの結果を自分のクラスに静的フィールドを追加して、「キャッシュ」になります。

+0

+1異なる検索結果を配信/無効化する必要がない場合は、穴の外に出る。 –

+0

great stuff here –

+0

NLBを使用している場合は注意してください.NLBがリダイレクトするサーバーでのみ更新されるため、www複製でキャッシュを更新したい場合があります。 IISを再起動するか、有効期限が切れるのを待つオプションがあります。これにより、すべてのwwwアプリケーションでキャッシュが更新されます。 – Svmurvj

0

ファーム内にキャッシュを分散する必要がある場合は、2次キャッシュの実装を検討することができます。

EF 2nd Level Cache

関連する問題