データ アクセス レイヤーで .NET 用の FluentData ORM を使用しています。ただし、この質問はほとんどの ORM に当てはまる可能性があります。
IDbContext の適切な寿命は? データベースへの新しいクエリが実行されるたびに、新しいデータベース コンテキストをインスタンス化する必要がありますか? 以下に 2 つのシナリオがありますが、どちらが適切に使用されますか? MS SQL と MySQL サーバーにクエリを実行していることに注意してください。したがって、最大接続に到達する限り、どちらにも影響があるかどうかを知りたいです。はい、複数のスレッドでデータベースを呼び出しています。どちらのシナリオもスレッドセーフですか?
シナリオ A:
私のリポジトリ クラスは IDisposable を実装し、IDbContext 型のプライベート変数を保持します。この変数は、コンストラクターでインスタンス化され、クラスが破棄されるときに破棄されます。リポジトリ内のコンテキストのインスタンスは 1 つだけです。
シナリオ B:
私のリポジトリ クラスには、IDbContext の新しいインスタンスを返すプライベート メソッドがあります。別のメソッドがデータベースを呼び出すたびに、このメソッドを呼び出して新しいデータベース コンテキストを取得します。