ASP.NET MVC,Ninject,针对多个构造函数的每个请求的单个实例
我试图通过将工作单元实例传递到我的存储库中来实现工作单元模式 来自Global.asax的相关代码ASP.NET MVC,Ninject,针对多个构造函数的每个请求的单个实例,asp.net,asp.net-mvc,repository-pattern,ninject,unit-of-work,Asp.net,Asp.net Mvc,Repository Pattern,Ninject,Unit Of Work,我试图通过将工作单元实例传递到我的存储库中来实现工作单元模式 来自Global.asax的相关代码 public class SiteModule : NinjectModule { public override void Load() { Bind<IUnitOfWork>().To<SqlUnitOfWork>() .InRequestScope()
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>();
}
}
我想要的是,每个请求最多创建一个
SqlUnitOfWork
实例,并将其传递到我的存储库中(通过它们各自的构造函数)
IUnitOfWork
上的InRequestScope()
方法绑定是否足够?如果没有,我如何才能做到这一点?您的代码可以正常工作。任何请求它的类(通过构造函数/属性注入或调用内核的.Get
等)只会得到一个IUnitOfWork
实例。是的。任何请求它的类(通过构造函数注入或调用内核的.Get
等)都只会得到一个IUnitOfWork
实例。我们使用的模式与您相同(除了我们对DI使用structuremap)。我们的看起来略有不同。我们根据httprequest创建了一个新的sqlcontext,而不是UoW。一个请求可能有多个UoW's.Baddie-将您的评论添加为答案,以便可以对其进行投票并接受。
public class ProductRepository {
IUnitOfWork unitOfWork;
public ProductRepository(IUnitOfWork unitOfWork) {
this.unitOfWork = unitOfWork;
}
}
public class CategoryRepository {
IUnitOfWork unitOfWork;
public CategoryRepository(IUnitOfWork unitOfWork) {
this.unitOfWork = unitOfWork;
}
}