2

Entity Framework を使用してデータベースと対話する、かなり大規模な SQL 支援 ASP.NET プロジェクトがあります。

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

DB の読み取りと更新に ObjectContext を使用する複数のユーザーがいる予定です。同時実行性とスレッド セーフが私の最大の関心事です。

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

4

2 に答える 2

1

ほとんどの場合、リクエストごとに単一のコンテキストが必要です。単一のリクエストごとにより多くのコンテキストが必要になる可能性があるのは特別なシナリオのみですが、リクエスト間でコンテキストを共有することはありません

于 2012-04-14T09:45:36.017 に答える
0

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

ソース: http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.aspx

したがって、最良の方法は、HTTP 要求ごとに ObjectContext を使用することです。RepositoryBaseすべてのリポジトリが拡張するクラスを作成し、RepositoryBase一般的な CRUD 操作 (できれば genericnull ) を定義し、要求されている場合にのみ の新しいインスタンスを作成します。

于 2012-04-14T10:00:48.040 に答える