Quali sono i pericoli dell'utilizzo delle migrazioni EF (o qualsiasi quadro di auto-migrazione) nella produzione?

StackOverflow https://stackoverflow.com/questions/9387180

Domanda

Sto pensando di utilizzare Entity Framework 4.3 Migrations in un sito di produzione. Quella che segue è la mia preoccupazione:

Se la migrazione fallisce per qualsiasi motivo, voglio che tutte le dichiarazioni sono tornate indietro e il sito inserito in uno stato in basso in modo che nessun utente possa utilizzare il sito mentre provo a risolvere il problema. L'unica cosa è che non riesco a tornare a eseguire gli script a mano contro il database poiché i file di migrazione sono compilati nell'assemblaggio. Potrei tenere traccia dei file di migrazione e dei file di script SQL separatamente, ma a quel punto perché utilizzare le migrazioni.

Al lavoro, i file di script sono archiviati in una cartella SQL (a cui nessuno può navigare) sul sito. I file di script eseguiti precedentemente sono registrati nel database. Quando i nuovi file di script vengono visualizzati nella cartella (e non sono nel database), se un utente è un amministratore, verranno reindirizzati a un portale DB, altrimenti ottenere un sito-down per manutenzione. Se cerchiamo di non eseguire script dal portale, prendiamo i nuovi script e proviamo a eseguirli nel manuale all'interno di Express Studio. Questo ha funzionato per oltre un decennio. Sto solo esplorando le migrazioni per vedere se è arrivato un modo migliore. Non mi sembra. Per favore fatemi sapere se c'è un modo migliore e se non sono migrazioni, che cos'è.

È stato utile?

Soluzione

Sicuramente non userei migrazioni automatiche in un ambiente di produzione. In effetti, sono troppo un mostro di controllo per usare le migrazioni automatiche. Preferisco le migrazioni basate sul codice per garantire che tutti i database (la produzione personale, la produzione personale degli sviluppatori) Esattamente la stessa sequenza di aggiornamento.

Utilizzando le migrazioni basate sul codice in cui ogni fase di migrazione ottiene un nome, è possibile generare uno script di migrazione separato per l'uso quando si sollevano test di prova e prod. Preferibilmente dovrebbe essere eseguito su una copia del database per convalidare prima di eseguire l'ambiente REAL Prod.

Aggiunto più tardi

Per impedire alle migrazioni EF di fare qualsiasi cosa automatica, è possibile utilizzare una strategia di inizializzatore personalizzato. Vedere il mio blog o il Distribuzione del codice EF First App sul database di produzione Domanda di overflow in pila.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top