1

Entity Framework 経由で SQL データベースを呼び出しています。この呼び出しの実行には約 2 分かかります。この呼び出しが 1 回だけ発生するようにしたい。呼び出しが行われたら、結果をキャッシュに入れます。サイトに複数のユーザーがいる場合、データが返されるまでに 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;
    }
}
4

0 に答える 0