Sto utilizzando il database Entity Framework 6. Sto convertendo il progetto per implementare l'architettura della cipolla per passare a una migliore separazione delle preoccupazioni. Ho letto molti articoli e ho guardato molti video ma ho riscontrato alcuni problemi nel decidere la struttura della mia soluzione.Entity Framework 6 Architettura database First e Onion
Ho 4 progetti: Core, Infrastruttura, Web & Test.
Da quanto ho appreso, il file .edmx deve essere inserito nella cartella "Infrastruttura". Tuttavia, ho anche letto sull'utilizzo dei modelli di Repository e Unit of Work per aiutare nel disaccoppiamento EF e nell'utilizzo dell'iniezione di dipendenza.
Con questo detto:
Avrò per creare interfacce repository sotto NUCLEO per tutte le entità nel mio modello? Se è così, come si potrebbe mantenere questo su un enorme database? Ho esaminato l'automapper, ma ho riscontrato problemi con la presentazione di IEnumererables e IQueryables, ma c'è un'estensione disponibile che deve sfruttare questo. Posso provare questo percorso più a fondo, ma voglio prima ascoltarlo.
In alternativa, dovrei lasciare il mio edmx in Infrastructure e spostare i file T4 .tt per le mie entità su CORE? Questo presenta un accoppiamento stretto o una buona soluzione?
Un'interfaccia di repository generica funziona bene con il suggerimento fornito? O forse EF6 risolve già il problema del deposito e dei modelli UoW?
Grazie per aver guardato la mia domanda e per favore presentare eventuali risposte alternative pure.
Ho trovato un post simile qui che non è stato risposto: EF6 and Onion architecture - database first and without Repository pattern
Le interfacce e le entità devono essere in Core. Per un database di grandi dimensioni, esaminare i contesti limitati e la progettazione basata sul dominio. L'obiettivo di Onion Architecture è che i tuoi progetti Core non abbiano riferimenti a framework esterni come EF, AutoMapper, ASP.NET, WCF, ecc. Per EF in particolare, è un po 'più difficile separare le tue entità e EF stesso se stai usando EDMX. –
Accetto con @AnthonyChu su EDMX. Dovresti esaminare il codice Reverse Engineered First con EF Power Tools. – EfrainReyes
Grazie ragazzi. @AnthonyChu limiterà i contesti e DDD fornirà una soluzione che funziona con database-first o un'alternativa? –