ASP.NET MVC, Ninject, instancia única por solicitud para múltiples constructores
asp.net-mvc repository-pattern (1)
El código que tienes funcionará bien. Solo se IUnitOfWork una instancia de IUnitOfWork a cualquier clase que lo solicite (a través de la inyección de constructor / propiedad o llamadas al kernel .Get<> etc.)
Estoy intentando implementar un patrón de unidad de trabajo al pasar una instancia de unidad de trabajo a mis repositorios.
Código relevante de 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>();
}
}
Constructores de repositorios:
public class ProductRepository {
IUnitOfWork unitOfWork;
public ProductRepository(IUnitOfWork unitOfWork) {
this.unitOfWork = unitOfWork;
}
}
public class CategoryRepository {
IUnitOfWork unitOfWork;
public CategoryRepository(IUnitOfWork unitOfWork) {
this.unitOfWork = unitOfWork;
}
}
Lo que quiero es que se cree un máximo de 1 instancia de SqlUnitOfWork por solicitud y se transfiera a mis repositorios (a través de sus respectivos constructores).
¿Es el método InRequestScope() en el enlace IUnitOfWork suficiente? Si no, ¿cómo puedo lograr esto?