ASP.NET MVC, Ninject, seule instance par requête pour plusieurs constructeurs
-
29-09-2019 - |
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?
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