VS2013, codice EF6 prima, MVC, (VB)Quali sono i pro e i contro dell'utilizzo di uno o più DbContext con EF?
Volevo comprendere meglio i pro e i contro dell'utilizzo di un singolo contesto o della divisione di DbSet in più contesti. Ho letto alcuni vecchi messaggi SO su più DbContexts e non ho trovato veramente quello che stavo cercando; una dichiarazione completa su quando e dove usare o non usare più DbContexts.
Nel caso di un singolo utente che esegue un programma come Windows Form sul proprio hardware, sembrerebbe che non vi sia motivo di avere più contesti per facilitare il lavoro con il codice.
Nel caso di un'applicazione Web che esegue un importante programma aziendale per più aziende, sembrerebbe che più DbContexts siano essenziali per la sicurezza e l'amministrazione.
Ma mi piacerebbe avere una conferma se sto pensando a questa domanda correttamente. Tutto quello che posso pensare è il seguente, ma poi io sono abbastanza nuovo a questo ambiente:
A favore di un unico contesto:
- Coding ha solo un unico contesto per affrontare
- (ci sono problemi con le relazioni attraverso contesti?)
- Le migrazioni sono più facili perché non v'è una sola cartella di migrazione e di processo
- più facile ottenere un completo d iagram costruito in SSMS o EDMX
- (Link here per ottenere diagrammi EDMX quando si utilizza il codice prima)
Contro di un unico contesto:
- sicurezza potrebbe essere un problema per il multiplo web clienti in un'app aziendale
- (Si tratta di un problema per i siti Web semplici che hanno iscrizioni semplici?)
- alcuni così i messaggi sembrano suggerire il tempo di risposta è un problema
- (Qual è il meccanismo qui?)
Questo è tutto quello che ho. Non ne so abbastanza per comprendere appieno le due parti, e dato i diversi ambienti in cui possiamo lavorare, sembrerebbe che la risposta a uno o più contesti sarà diversa.
Attualmente sto lavorando a un sito Web che avrà iscrizioni e anche un'app scaricabile che sarà un'app personale in esecuzione sull'hardware dell'utente. In questo caso, penso che un singolo contesto per entrambi abbia senso, ma prima di approfondirmi, vorrei però chiedere una discussione su questo. Presumo che altri che sono in qualche modo nuovi per l'ambiente continueranno ad avere le stesse domande.
Ho anche notato che Microsoft ha ritenuto opportuno aggiungere più funzionalità di contesto all'EF in EF6 e versioni successive, quindi è chiaro che ci devono essere alcuni ambienti di programmazione che danno origine a motivi convincenti per avere più contesti.
Grazie per l'input.
migliori saluti, Alan
MS ha aggiunto più contesti principalmente perché i contesti di grandi dimensioni presentano problemi di prestazioni. rompere questi problemi. –
In breve, direi che più DbContexts sono utili quando si desidera dividere il dominio in parti separate e aumentare il proprio ciclo di vita indipendentemente durante il ciclo di vita del progetto. Ti suggerisco di leggere su Domain Driven Development (http://msdn.microsoft.com/en-us/magazine/dn342868.aspx e http://msdn.microsoft.com/pl-pl/magazine/jj883952(en- noi) .aspx) di Julie Lerman se vuoi scavare il deepper in questo argomento. – Fka
Ottimi collegamenti, grazie. Avevo studiato DDD a scuola, ma è diverso quando lo fai per davvero, e quegli articoli mi sembrano un po 'più focalizzati al momento. @Erik: ottenuto nei grandi contesti; Sono abbastanza sicuro che non sarà il mio problema per un po ', ma apprezzo la comprensione del motivo per cui hanno creato le molteplici funzionalità contestuali. – Alan