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
绑定足够吗?如果不是,我该如何实现?
解决方案
您拥有的代码可以正常工作。只有一个实例 IUnitOfWork
将给予任何要求它的类(通过构造函数/财产注入或拨打内核的电话 .Get<>
ETC。)
不隶属于 StackOverflow