Asp.net

ASP.NET MVC,Ninject,每個請求的單個實例對多個建構子

  • October 9, 2010

我試圖通過將工作單元實例傳遞到我的儲存庫來實現工作單元模式。

來自 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如果不是我怎麼能做到這一點?

您擁有的程式碼可以正常工作。IUnitOfWork任何請求它的類都只會提供一個實例(通過建構子/屬性注入或呼叫核心.Get<>等)

引用自:https://stackoverflow.com/questions/3897690