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;
}
}