ASP.NET MVC、Ninject、単一インスタンス複数のコンストラクターのリクエストごとに単一インスタンス
-
29-09-2019 - |
質問
仕事のユニットインスタンスを私のリポジトリに渡すことにより、仕事パターンの単位を実装しようとしています。
Global.Asaxからの関連コード。
public class SiteModule : NinjectModule
{
public override void Load() {
Bind<IUnitOfWork>().To<SqlUnitOfWork>()
.InRequestScope()
.WithConstructorArgument("connectionString", ConfigurationManager.ConnectionStrings["Entities"].ConnectionString);
Bind<IProductRepository>().To<ProductRepository>();
Bind<ICategoryRepository>().To<CategoryRepository>();
}
}
リポジトリコンストラクター:
public class ProductRepository {
IUnitOfWork unitOfWork;
public ProductRepository(IUnitOfWork unitOfWork) {
this.unitOfWork = unitOfWork;
}
}
public class CategoryRepository {
IUnitOfWork unitOfWork;
public CategoryRepository(IUnitOfWork unitOfWork) {
this.unitOfWork = unitOfWork;
}
}
私が望んでいるのは、最大1インスタンスの SqlUnitOfWork
リクエストごとに作成され、(それぞれのコンストラクターを介して)私のリポジトリに渡されます。
それは InRequestScope()
の方法 IUnitOfWork
十分に結合しますか?そうでない場合は、どうすればこれを達成できますか?
解決
あなたが持っているコードは正常に動作します。の1つのインスタンスのみ IUnitOfWork
それを要求するクラスに与えられます(コンストラクター/プロパティインジェクションを介して、またはカーネルへの呼び出し .Get<>
等。)
所属していません StackOverflow