ASP.NET MVC, Ninject, один экземпляр на запрос для нескольких конструкторов

Я пытаюсь реализовать шаблон единицы работы, передавая экземпляр единицы работы в мои репозитории.

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

18
задан Fabian 9 October 2010 в 20:10
поделиться