Guardate la mia Controller (sto usando Dependency Injection per l'agenzia dipendenze):Controller MVC .NET con più repository e servizi?
public RoleController(IRoleRepository roleRepository, ISiteRepository siteRepository, IUserRepository userRepository, IDbContext dbContext)
{
_roleRepository = roleRepository;
_siteRepository = siteRepository;
_userRepository = userRepository;
_dbContext = dbContext;
}
Avere una classe con molte dipendenze è un odore di codice? Destra?
Tuttavia, nel mio esempio ho bisogno di associare Users
e Sites
in un Role
, quindi ho bisogno di queste dipendenze per fare questa associazione.
Alcune persone su una mailing list mi hanno detto che avere troppe dipendenze è un segno che qualcosa è probabilmente sbagliato. Ma non vedo altro modo. Ho separato le mie responsabilità, c'è qualcosa in quella situazione che non so come trattare? Qualcosa non va?
Aggiornamento:
ho bisogno di repository e DbContext perché DbContext è il mio UnitOfWork, repository non salvano.
questo esempio è un semplice CRUD con alcune altre funzionalità come Associazioni in vista con una griglia.
Aggiornamento 2:
sto usando un'architettura in cui il mio livello di interfaccia utente è la MVC.
Generalmente creo solo repository per le root aggregate, non per tutte le entità. Non conosco il tuo dominio, ma il mio istinto mi dice che hai troppi repository. Inoltre, perché hai bisogno dei repository E del dbcontext? Infine, di solito preferisco fare attività di tipo "orchestrazione" in un 'Servizio', e lasciare che il servizio gestisca i repository ecc. La dipendenza del controller diventa quindi solo sul servizio. – Brook
@Brook vedi aggiornamento. –
possibile duplicato di [In asp.net-mvc, c'è un modo più elegante di utilizzare IOC per iniettare repository multipli in un controller?] (Http://stackoverflow.com/questions/7311623/in-asp-net-mvc- è-there-a-more-elegant-way-using-ioc-to-iniettore-mutiple-repositor) – Omar