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

Fab*_*ian 18 asp.net asp.net-mvc ninject unit-of-work repository-pattern

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

来自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>();
    }
}
Run Code Online (Sandbox Code Playgroud)


存储库构造函数:

public class ProductRepository {
    IUnitOfWork unitOfWork;
    public ProductRepository(IUnitOfWork unitOfWork) {
        this.unitOfWork = unitOfWork;
    }
}

public class CategoryRepository {
    IUnitOfWork unitOfWork;
    public CategoryRepository(IUnitOfWork unitOfWork) {
        this.unitOfWork = unitOfWork;
    }
}
Run Code Online (Sandbox Code Playgroud)


我想要的是SqlUnitOfWork每个请求最多创建一个实例并传递到我的存储库(通过它们各自的构造函数).

绑定InRequestScope()方法是否IUnitOfWork足够?如果不是我怎么能实现这一目标?

Oma*_*mar 8

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