2012-02-20 44 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