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?