我通过Entity Framework调用SQL数据库,此调用大约需要2分钟来执行。 我想确保此调用仅发生一次。调用完成后,我将结果放入缓存中。我注意到如果网站上有多个用户,在返回数据之前可能超过2分钟,最好的方法是什么?我应该使用互斥锁吗?或者Entity Framework(版本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;
}
}