Pregunta

Estoy tratando de poner en práctica una unidad de patrón de trabajo que pasa por una unidad de la instancia de trabajo en mis repositorios.

código pertinente 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 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 se crea un máximo de 1 instancia de SqlUnitOfWork por solicitud y se pasa en mis repositorios (a través de sus respectivos constructores).

Es el método InRequestScope() en la unión suficiente IUnitOfWork? Si no es así, ¿cómo puedo lograr esto?

¿Fue útil?

Solución

El código que tiene no tendrán ningún problema. Se dará sólo una instancia de IUnitOfWork a cualquier clase que lo solicite (a través de la inyección de constructor / o propiedad de las llamadas al kernel .Get<> etc.)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top