我试图通过将一个工作单元实例传递到我的存储库来实现一个工作单元模式。
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;
}
}
我想要的是每个请求最多创建一个SqlUnitOfWork
实例并传递到我的存储库(通过它们各自的构造函数)。
InRequestScope()
上的IUnitOfWork
方法绑定是否足够?如果不是我怎么能实现这个目标?
答案 0 :(得分:8)
您拥有的代码可以正常运行。只有IUnitOfWork
的一个实例将被赋予任何请求它的类(通过构造函数/属性注入或调用内核的.Get<>
等)。