我正在通过实体框架调用 SQL 数据库,这个调用大约需要 2 分钟才能执行。我想确保这个调用只发生一次。调用完成后,我将结果放入缓存中。我注意到如果网站上有多个用户,则返回数据可能需要 2 分钟以上,解决此问题的最佳方法是什么?我应该使用互斥锁吗?或者实体框架(版本 4)是否具有任何内置功能来处理这种情况。我正在使用 MVC 4。谢谢!
public IEnumerable<AdListing> AllActiveAds()
{
try
{
if (PullCache(Constants.CacheKeys.AllActiveAds) == null)
{
using (var db = new MyEntities())
{
db.CommandTimeout = 300;
List<AdListing> results =
(from a in
db.AdListings
.Include("AdPhotos")
.Include("tbLocation")
where !a.Deleted
select a).ToList();
PushCache(results, Constants.CacheKeys.AllActiveAds);
}
}
return (List<AdListing>) PullCache(Constants.CacheKeys.AllActiveAds);
}
catch (Exception ex)
{
HandleException(ex);
return null;
}
}