2

Linq-to-Sql を使用すると、Visual Studio によって DataContext クラスが作成されます。私のプロジェクトの 1 つで、約 300 個の CRUD コマンド (プロジェクト全体) に対して 1 つの DataContext インスタンスを使用しましたが、後で解決することができた小さな問題で機能し、最近のプロジェクトではCRUD コマンドごとにそのインスタンスを作成しましたが、ここで質問です。DataContext を使用する最良の方法は何ですか? コマンドごとに 1 つですか、それともプロジェクトごとに 1 つですか? それともトランザクションごとに1つですか(それも良い考えだと思います)?また、それぞれの方法で速度とパフォーマンスに違いはありますか?

4

1 に答える 1

4

開いたままにしておくと、DataContext のインスタンス化が完全に自由ではないため、パフォーマンスが無駄になります。安価ですが測定可能です。プロフィールに表示されます。

長時間開いたままにすると、次のような問題も発生します。

  1. オブジェクトがそこに蓄積し始めます
  2. とにかく、複数のスレッドまたは複数のトランザクションで同時に使用することはできません
  3. SubmitChanges の 1 つが何らかの論理的な理由で失敗した場合、再試行の頻度に関係なく、同じエラーが永遠に表示されるため、コンテキストは無効になります。

以下に、深い理解なしに絶対にやってはいけないルールをいくつか示します。

  1. 複数の HTTP 要求/WCF 呼び出しに対して 1 つの DataContext を持つ
  2. 無制限の時間 (つまり、デスクトップ アプリが停止している期間) の間、DataContext を保持します。
  3. 無制限の数の追跡対象エンティティ用の DataContext を用意する
  4. スレッド間で使用する
于 2012-07-01T10:54:52.067 に答える