2012-04-14 7 views
2

データベースとやりとりするためにEntity Frameworkを使用するかなり大きなSQLバックアップASP.NETプロジェクトがあります。エンティティフレームワークObjectContextの作成頻度の制御

私の質問は、各クラス/メソッドのedmx/designerファイルで定義されたObjectContextのインスタンスを作成するか、またはonloadをインスタンス化し、基本的にすべての要求を1つのインスタンスで処理する静的クラスの周りにラップします。

ObjectContextを使用して複数のユーザーがDBを読み込んで更新するため、並行性とスレッドの安全性が私の最大の懸念事項です。

編集: このコードは最終的にIISで実行され、リサイクルの影響を受けます。

答えて

1

ほとんどの場合、すべての要求に対して単一のコンテキストが必要です。特殊なシナリオだけでは、1つの要求あたりより多くのコンテキストを必要とする場合がありますが、never share context among requestsです。

0

ObjectContextクラスはスレッドセーフではありません。 ObjectContext内のデータ オブジェクトの整合性は、マルチスレッドの シナリオでは保証されません。

出典:http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.aspx

ための最良のアプローチは、HTTPリクエストごとのObjectContextを使用することです。 RepositoryBaseから一般的なCRUD操作(、好ましくは総称)を定義し、要求があった場合にのみnullの新しいインスタンスを作成するRepositoryBaseクラスを作成します。

関連する問題