gpt4 book ai didi

ASP.NET MVC,Ninject,每个请求的单个实例对多个构造函数

转载 作者:行者123 更新时间:2023-12-03 13:36:38 25 4
gpt4 key购买 nike

我试图通过将工作单元实例传递到我的存储库来实现工作单元模式。

来自 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 上的方法绑定(bind)够吗?如果不是我怎么能做到这一点?

最佳答案

您拥有的代码可以正常工作。只有一个 IUnitOfWork 的实例将提供给任何请求它的类(通过构造函数/属性注入(inject)或调用内核的 .Get<> 等)

关于ASP.NET MVC,Ninject,每个请求的单个实例对多个构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3897690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com