Mi sono imbattuto in un'architettura per un'applicazione .net in cui ci sono 3 livelli
Repository layer (edmx and their classes)
^
|
V
Domain layer (Model -> Interfaces and their implementation)
^
|
V
Web layer (Model -> View models)
La comunicazione tra il web e il livello dati avviene tramite interfacce definite nel livello dominio ( modelli anemici )
La convenzione di denominazione utilizzata qui dipende dai nomi delle tabelle
Livello repository
TableNameRepository.cs
TableName.cs (file generati automaticamente)
DomainLayer
ITableName.cs
TableName.cs
TableNameService.cs
Livello Web
TableNameListModel
TableNameAddEditModel
Il problema è che se una tabella viene modificata nella tabella, tutte le classi nel repository e nei livelli di dominio devono essere riutilizzate.
Inoltre, la comunicazione tra questi livelli avviene con i manager che sono stati risolti come segue, dove Container
è statico
Container.Resolve<RepositoryManager>();
Container.Resolve<ServiceManager>();
Il DBContext
è memorizzato nelle variabili di sessione durante la prima chiamata e rimosso alla fine della richiesta. La seconda chiamata inizializzerà DBContext con l'operatore new
.
Qualche suggerimento su cosa può essere fatto (con modifiche minime) in modo da imporvi questa architettura in modo che sia allineata con DDD.