Ho appena visto i video di Julie Lermans sull'utilizzo di contesti limitati in EF (http://www.pluralsight.com/training/Courses/TableOfContents/efarchitecture) e ora sto provando a elaborare il modo migliore per implementarlo (utilizzando POCO). Le due opzioni che vedo sono di avere un modello edmx che definisce tutto e quindi di creare DbContexts per includere le entità appropriate o di avere modelli edmx separati per ogni contesto e utilizzare DbContexts creato automaticamente.Contesti limitati (Db) nell'architettura Entity Framework
Qualcuno ha qualche idea di ciò che è meglio o dei pro/contro di entrambi?
IMHO: Per un singolo modello è molto meno classi e molto più riutilizzo del codice (anche se queste classi vengono create automaticamente così davvero sarà solo la funzionalità aggiuntiva che verrà duplicata manualmente), ma io avrà un sacco di classi in un posto e per le classi che devono essere specializzate queste dovranno avere nomi diversi. Per esempio. Cliente, CustomerForFunctionalityX, CustomerForFunctionalityB.
Con i modelli separati posso essere molto più severo su ciò che entra in un contesto come rimuovere una proprietà non ha bisogno di essere un'entità completamente nuova, e posso nominare tutto come vorrei (cioè tutti i modelli possono usare un Oggetto del cliente anche se differisce tra i modelli), ma ora ogni contesto ha entità completamente diverse anche se stanno tutti mappando solo sulla stessa tabella - il che può anche rendere più difficile il loro passaggio tra i contesti (questo però non dovrebbe essere necessario troppo spesso altrimenti significa che i contesti sono stati definiti errati).
Perché non utilizzare l'unità di modello di lavoro per creare unità di lavoro che espongono solo le entità con cui un determinato team lavorerà? Se tutti i team lavorano contro lo stesso database, in realtà dovrebbe esserci solo un team centrale che gestisce il database. I contesti limitati sembrano indirizzare al codice un problema che è meglio indirizzato con la struttura del team, IMO. – Maess
Sicuramente l'aggiunta del pattern UOW potrebbe aiutare e mi piace il pattern UOW, sebbene possa aggiungere complessità.Il motivo principale per cui mi piacciono gli edmx separati è che un edmx di grandi dimensioni può diventare non gestibile e anche la creazione di edmx limitati fa sì che gli sviluppatori del database possano vedere esattamente quali entità appartengono a un contesto, piuttosto che dover creare entità personalizzate per tutti gli UOW in uno modello: sarebbe bello avere questa separazione nell'intero modello, incluso il modello di database. – user1671016