我正在尝试通过将一个工作单元实例传递到我的存储库来实现一个工作单元模式。
来自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
实例,并将其传递到我的存储库(通过它们各自的构造函数)。
IUnitOfWork
绑定上的InRequestScope()
方法足够了吗?如果没有,我如何才能做到这一点呢?
发布于 2010-10-14 09:26:24
您拥有的代码将工作得很好。只有一个IUnitOfWork
实例将被提供给请求它的任何类(通过构造函数/属性注入或调用内核的.Get<>
等)。
https://stackoverflow.com/questions/3897690
复制相似问题