私たちはASP.NET MVCサイトを構築しています.ユニットテストを最も有効にするために接続を定義する場所に苦労しています.トランザクションとデータベース操作を管理できるデータ コンテキスト)。
3 つのクラスがあるとします。
UserController
UserService
UserRepository
以前は、UserService のメソッド内で次のようなことを行っていました。
Using (ISomeSession session = new SomeSession())
{
session.StartTransaction();
IUserRepository rep = new UserRepository(session);
rep.DoSomething();
rep.Save();
session.Commit();
}
ただし、SomeSession への依存関係が挿入されていないため、これを単体テストすることは実際には不可能でした。ただし、DI を使用して UserService に依存関係を挿入すると、セッションは UserService の存続期間中ハングアップします。UserController から複数のサービスが呼び出された場合、UserController がガベージ コレクションされるまで、それぞれのサービスがハングアップする可能性があります。
これをより適切に管理する方法について何か考えはありますか? 明らかな何かが欠けていますか?
編集
わかりにくかったらすみません。セッション/データ コンテキストで依存性注入を使用できることは理解していますが、サービス クラスの存続期間中は維持されます。実行時間の長いアクション/メソッド (つまり、サービスがバッチ プロセスによって呼び出されているとしましょう) の場合、テスト容易性を追加する以外の理由で、多くのオープン セッションが発生する可能性があります。