ASP.NET MVC, Ninject, esempio unico per ogni richiesta di più costruttori
-
29-09-2019 - |
Domanda
Nel tentativo di implementare un'unità di modello di lavoro passando un'unità di un'istanza di lavoro nel mio repository.
relativo codice da 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>();
}
}
costruttori Repository:
public class ProductRepository {
IUnitOfWork unitOfWork;
public ProductRepository(IUnitOfWork unitOfWork) {
this.unitOfWork = unitOfWork;
}
}
public class CategoryRepository {
IUnitOfWork unitOfWork;
public CategoryRepository(IUnitOfWork unitOfWork) {
this.unitOfWork = unitOfWork;
}
}
Quello che voglio è che si crea un massimo di 1 istanza di SqlUnitOfWork
per ogni richiesta ed è passata nelle mie repository (tramite i loro rispettivi costruttori).
Il metodo InRequestScope()
sul abbastanza vincolante IUnitOfWork
? Se no come posso raggiungere questo obiettivo?
Soluzione
Il codice avete funzionerà bene. Una sola istanza di IUnitOfWork
sarà data a qualsiasi classe che ne faccia richiesta (tramite costruttore / iniezione proprietà o chiamate al kernel .Get<>
ecc.)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow