C# 缓存SQL调用的结果

C# 缓存SQL调用的结果,c#,caching,C#,Caching,我有一个下拉列表,其中包含对SQL Server数据库的实体框架调用的结果集。目前,该调用返回了20条记录,我正在考虑使用缓存。我以前从未为特定控件设置过缓存,有人能给我指一下教程吗。对于那个小数据集来说,这也是一种过度杀伤力吗?如果这是ASP.NET,那么最简单的缓存方法就是使用HttpContext.Current.Cache对象。在您的代码中,它会像这样工作。你可以找到 如果这是WPF/WiFrm,那么最简单的方法就是将一个静态字段添加到你的类中,并使用与上面相同的逻辑缓存你的EF查询的结

我有一个下拉列表,其中包含对SQL Server数据库的实体框架调用的结果集。目前,该调用返回了20条记录,我正在考虑使用缓存。我以前从未为特定控件设置过缓存,有人能给我指一下教程吗。对于那个小数据集来说,这也是一种过度杀伤力吗?

如果这是ASP.NET,那么最简单的缓存方法就是使用HttpContext.Current.Cache对象。在您的代码中,它会像这样工作。你可以找到


如果这是WPF/WiFrm,那么最简单的方法就是将一个静态字段添加到你的类中,并使用与上面相同的逻辑缓存你的EF查询的结果。

< P>如果你需要在一个农场中分配缓存,你可以考虑实现一个第二级缓存。

Delegate article+1如果查询结果不需要由不同的节点分发/失效,这将使您摆脱困境。如果您使用NLB-并希望刷新www应用程序上的缓存,请小心,因为它将仅在NLB重定向您的服务器上刷新。可以选择重新启动IIS或等待滑动过期,这将刷新所有www应用程序上的缓存。
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");