dbcontextインスタンス:1つのWebリクエスト1?
デザインコンセプト
各Webアプリケーションの各Web要求に対して独立したDBContextインスタンスを作成します。アプリケーション全体に単一のDBContextインスタンスの使用と比較して、この方法には多くの利点があります。
利点
Action Domain:>各Webリクエストは、明確なトランザクション境界を達成するために、独自のドメインで実行されています。これにより、エラー処理が簡素化され、現在の要求での故障操作の影響を制限することにより、データの整合性が保証されます。
分離:
各Web要求には、同時リクエスト間のデータの競合を防ぐための独自のデータベースコンテキストがあります。これは、同じデータベースにアクセスする複数のユーザーまたはプロセスで特に重要です。
- CLEARレイヤード:Web要求ドメイン、ビジネスロジック、および基礎となるデータアクセスレイヤーデカップリングでDBContextインスタンスを管理します。これにより、コードのモジュール式とメンテナンスがより簡単になります。
- 該当するシーン
単一のdbcontextインスタンスを使用する各Web要求について、次のアプリケーションシナリオに適用できます。
-
データの一貫性は非常に重要であり、単一のリクエストでトランザクションを制限する必要があります。
データベースの並行性アクセスボリュームは非常に高く、データの競合を防ぐために分離が重要です。
ビジネスロジックは複雑であり、データアクセスとアプリケーションロジックを明確に分離しています。
一時的なdbcontextのインスタンスの制限
理論的にはDBContextを過渡的(つまり、各オブジェクトはインスタンス)として登録していますが、これは次の問題につながる可能性があります。
-
損失を変更します:- 各オブジェクトには独自のdbcontextインスタンスがあり、保存するには
によって保存する必要があります。このステップが無視された場合、変更は失われます。 -
エンティティスコープ:
DBContextインスタンスによってロードされたエンティティは、別のインスタンスのコンテキストでは使用できません。これにより、コードが複雑になり、パフォーマンスの問題が発生します。
コンテキストの所有権:dbcontextインスタンスの表示はより複雑になり、要求境界で明示的に扱われるか、自動的に処理する必要があります。
結論
-
各Web要求に単一のDBContextインスタンスを使用すると、データの一貫性、分離、コードメンテナンスに明らかな利点があります。利点と短所を比較検討した後、この方法はデータの整合性と同時に強く推奨されます。
以上がアプリケーションでWeb要求ごとに1つのDBContextを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。