Question

Im essayant de mettre en œuvre une unité de modèle de travail en passant une unité d'instance de travail dans mes dépôts.

Code pertinent 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>();
    }
}


constructeurs référentiel:

public class ProductRepository {
    IUnitOfWork unitOfWork;
    public ProductRepository(IUnitOfWork unitOfWork) {
        this.unitOfWork = unitOfWork;
    }
}

public class CategoryRepository {
    IUnitOfWork unitOfWork;
    public CategoryRepository(IUnitOfWork unitOfWork) {
        this.unitOfWork = unitOfWork;
    }
}


Ce que je veux est qu'un maximum de 1 instance de SqlUnitOfWork est créé par demande et est passé dans mes dépôts (via leurs constructeurs respectifs).

La méthode InRequestScope() sur la fixation assez IUnitOfWork? Sinon, comment puis-je y parvenir?

Était-ce utile?

La solution

Le code que vous avez fonctionnera très bien. Une seule instance de IUnitOfWork sera donnée à une classe que les demandes (via l'injection de constructeur / propriété ou des appels à .Get<> du noyau etc.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top