Я пытаюсь реализовать единицу шаблона работы, передав единицу рабочего экземпляра в свои репозитории.
Соответствующий код из 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
достаточным? Если нет, то как я могу достичь этого?