1

EF を使用してすべての DB タスクを実行する ASP.NET MVC アプリを作成しています。

データベースには変更されることのない関連テーブルがいくつかあり、最初に要求されたときにそれらの 2 つのテーブル (数百レコード) からデータを取得し、それをオブジェクトに格納する静的コレクションを作成することを考えていました。毎回データベースにヒットするのを防ぎます。

ASP.NET で静的オブジェクトを避けるべきだと言っている人を何人か読んだので、これが悪い習慣なのか、それともこのようなシナリオ (同時実行の問題を防ぐ必要がある読み取り専用で少量のデータ) で許容できるのか疑問に思っていました。 )。

また、これを行うための他のより良い代替手段があるかどうかを知りたいです。

ありがとう。

4

2 に答える 2

2

まったく同じ理由で、あなたが計画していることを正確に実行しました。それはすでに数年間うまく機能しています。

データの初期化が正しく行われていることを確認してください。問題はありません。初期化するときは、次のことに注意してください。

  • 可能な限りロックを使用しないでください (そうしないと、休暇に行く 2 分前にアプリがデッドロックします)。
  • どのような状況でも、静的コンストラクターを失敗させてはなりません
  • キャッシュの消費者がキャッシュを変更できないことを確認してください

データが実際には静的ではなく、実際にかなり頻繁に再読み込みする必要がある場合、これは最適なソリューションではない可能性があります。

ご参考までに、このアプローチを使用して、たとえば国データ、通貨データ (レートではなく基本データ)、販売単位データ (pcs、m、kg など) をキャッシュしました。これらはすべてデータベースに保存されますが、変更されることはほとんどありません。

于 2012-06-26T04:31:01.640 に答える
0

静的オブジェクトを使用するのはあまり良い方法ではありません。設定やDBデータをメモリ内に保存するために使用できるRavenDBのようなものを使用します。フットプリントが非常に小さく、非常に高速です。LINQ を完全にサポートしています。

于 2012-06-26T02:16:53.810 に答える