asp.net asp.net-mvc repository-pattern ninject unit-of-work

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?