实体框架仅允许一个查询

时间:2013-05-02 14:35:29

标签: asp.net-mvc-4 entity-framework-4

我通过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;
    }
}

0 个答案:

没有答案