8

Sto utilizzando EF 5.0 e vorrei iniziare a utilizzare Code-based migrationsMigrazioni basate su codice EntityFramework, come viene determinato l'ordine?

Ho usato fluent migrator e c'è un concetto di ordine migrazione. Le migrazioni possono essere migrate/rollback indipendentemente dalla versione di migrazione del database.

Entity Framework ha funzionalità simili?

Stavo pianificando di mantenere più implementazioni di migrazione per ogni versione del database (probabilmente legata al numero di sprint all'inizio).

Perché lo voglio?

La nostra integrazione continua migra il database per ogni ambiente. È probabile che la nostra build di Dev sarà solo una versione "dietro", ma quando andremo in ambiente QA o PROD il database sarà in ritardo con più migrazioni.

Forse sto andando in questo modo nel modo sbagliato, nel qual caso mi piacerebbe sentire le opinioni sul modo migliore di fare migrazione con CI.

risposta

9

Sì EF ha questa funzionalità.

Quando si esegue Add-Migration noterete che il file di migrazione è preceduto da un timestamp. Questo è ciò che determina l'ordine, assumendo che le migrazioni automatiche siano e siano sempre state disabilitate.

Se si utilizza una combinazione di migrazioni esplicite e migrazioni automatiche, è possibile notare una proprietà Source aggiuntiva nel file .resx generato con la migrazione. In questo modo EF determinerà se è necessario eseguire una migrazione automatica prima di eseguire la migrazione esplicita.

La mia esperienza mi ha insegnato queste linee guida:

1) Mai utilizzare le migrazioni automatiche.

2) Ogni sviluppatore del team deve assicurarsi di avere l'ultimo codice prima di creare una nuova migrazione esplicita. Una sorta di ovvio, ma la creazione di migrazioni da codice non aggiornato causerà problemi.

3) Gli sviluppatori devono assicurarsi che, se scrivono SQL personalizzato nel metodo Up() della migrazione, scrivono il codice appropriato (e lo testano!) Per invertire tali modifiche nel metodo Down().

+1

Buoni punti, evviva. Direi 2) non è ovvio fino a quando non ti rendi conto che EF ha una rappresentazione binaria del modello attuale nascosto che è impossibile unire/aggiornare. (Vedi anche http://stackoverflow.com/a/10694348/10245) Questo per quanto riguarda i rami delle funzionalità: - / –

Problemi correlati