我试图通过将工作单元实例传递到我的存储库来实现工作单元模式。
来自 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
是每个请求最多创建 1 个实例并将其传递到我的存储库中(通过它们各自的构造函数)。
绑定上的InRequestScope()
方法够吗?IUnitOfWork
如果不是我怎么能做到这一点?