1

我正在通过实体框架调用 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;
    }
}
4

0 回答 0