Linq-To-Sql を使用して選択のみのクエリを実行する Web サービスを作成しています。この点で、操作がデータベースを変更したり、オブジェクトの変更を追跡したりする操作ではないため、DataContext を静的フィールド/プロパティとして許容できますか?
そうでない場合、どのような代替アプローチが適していますか?
Linq-To-Sql を使用して選択のみのクエリを実行する Web サービスを作成しています。この点で、操作がデータベースを変更したり、オブジェクトの変更を追跡したりする操作ではないため、DataContext を静的フィールド/プロパティとして許容できますか?
そうでない場合、どのような代替アプローチが適していますか?
DataContext はスレッドセーフではないため、静的に格納することはお勧めできません。
DataContext は実際には非常に長く存続することは期待されていません。リクエスト処理中にインスタンス化するだけです。
using ブロックでラップされたすべてのメソッド呼び出しでデータ コンテキストを再作成します。これにより、操作の結果として作成されたオブジェクトが確実に破棄され、メモリ フットプリントが削減されます。オブジェクトはシリアライズされて送り返されるため、呼び出しにかかる時間よりも長くデータコンテキストを維持する必要はありません。データ コンテキスト自体は特に重いオブジェクトではなく、必要に応じて再作成することは避けるべきではありません。これは、作業オブジェクトの単位として使用されることを意図した方法です。