Im tratando de implementar un patrón de unidad de trabajo pasando una instancia de unidad de trabajo a mis repositorios.ASP.NET MVC, Ninject, instancia única por solicitud de múltiples constructores
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 repositorio:
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 un máximo de 1 instancia de SqlUnitOfWork
es creado por la petición y se pasa en mis repositorios (a través de sus respectivos constructores).
¿Es el método InRequestScope()
en el IUnitOfWork
lo suficientemente vinculante? Si no, ¿cómo puedo lograr esto?
Sí lo es. Solo se dará una instancia de 'IUnitOfWork' a cualquier clase que lo solicite (mediante inyección de constructor o llamadas al' .Get '> del núcleo) – Omar
estamos usando el mismo patrón que usted (excepto que usamos structuremap para DI). El nuestro se ve un poco diferente. Actualizamos un sqlcontext por httprequest, no un UoW. Una solicitud puede tener múltiples UoW. – RPM1984
Baddie: agrega tu comentario como respuesta para que pueda ser votado y aceptado. –