2012-02-20 43 views
2

我有一個下拉列表,我將一個實體框架調用的結果集填充到SQL Server數據庫。目前,該調用返回了20條記錄,我正在考慮使用緩存。我從來沒有爲特定的控件設置緩存,有人可以指點我的教程。對於那個小數據集,這是否也有點矯枉過正?SQL調用的緩存結果

+0

ASP.NET?的WinForms? WPF? – BrokenGlass 2012-02-20 15:45:51

+0

http://deanhume.com/Home/BlogPost/object-caching-net-4/37像樣的文章 – Joe 2012-02-20 15:46:10

回答

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如果查詢結果不需要由不同的節點分發/失效,這會讓你出了一個洞。 – 2012-02-20 16:07:23

+0

偉大的東西在這裏 – 2012-02-20 16:12:53

+0

請注意,如果您使用NLB並且想要刷新www aplication上的緩存,那麼它只會在NLB重定向您的服務器上刷新。有選項可以重新啓動IIS或等待滑動過期,並且將刷新所有www應用程序上的緩存。 – Svmurvj 2015-06-30 11:26:50

0

如果您需要在服務器場中分配高速緩存,則可以考慮實施二級高速緩存。

EF 2nd Level Cache