2012-04-24 8 views
13

Ho sempre trovato il controllo di versione un po 'un problema quando si tratta di schemi di database.Utilizzo del codice di Entity Framework Prime migrazioni in un progetto DVCS

Quindi, attualmente sto valutando le migrazioni di First Entity Framework Code e fino ad ora sono rimasto molto colpito.

La mia domanda è: qualcuno ha esperienza sull'uso di Migrazioni in una squadra utilizzando un DVCS?

Se gli sviluppatori che lavorano su rami diversi creano ciascuno le proprie migrazioni, lo strumento "Update-Database" fa fronte a quello corretto quando i rami vengono uniti?

Immagino che cosa potrebbe accadere è che una nuova Migrazione apparirebbe in mezzo alla lista. Questo verrà quindi rilevato o cercherà solo le migrazioni "più recenti" rispetto a quello appena distribuito?

Apprezzo che il team dovrà fare attenzione a non creare modifiche agli schemi in conflitto, questo è qualcosa che possiamo gestire, ma sarebbe utile sapere se 'Update-Database' è abbastanza intelligente da individuare l''mancante ' migrazione?

Grazie, - Chris

+2

sei arrivato a una conclusione con questo? – sirrocco

risposta

1

Secondo quello blog post ho potuto trovare sul tema, sembra che lo sviluppo parallelo, indipendentemente dallo strumento VCS, è problematico con lo stato attuale delle migrazioni di database in EF. Non sembra essere un modo per gestire lo scenario a causa del modo in cui tiene traccia dello stato del database. Pawel fornisce uno example project on GitHub per visualizzare il problema.

È possibile che si stia davvero meglio utilizzando uno strumento indipendente per gestire le migrazioni del database. Ho usato Migrator.NET con un grande successo e gestisce correttamente le modifiche allo schema degli sviluppatori paralleli. Utilizza anche un metodo relativamente a bassa tecnologia per tracciare la "versione" del database, che funziona sorprendentemente bene finché tu e il tuo team decidete il giorno in cui nessuno potrà mai toccare il database se non attraverso una classe di migrazione (abbiamo chiamato quel giorno v1 del database).

+0

Guarda anche [FluentMigrator] (http://nuget.org/packages/FluentMigrator). Sembra che Migrator.NET sia diventato obsoleto e questo progetto abbia così tante somiglianze. L'ho licenziato ieri sera e ha persino un modo per utilizzare le classi di migrazione Migrator.NET esistenti. – Sumo

0

Non penso che funzioni e non penso che ci sia un modo per aggirarlo.

Vedere this blog post per ulteriori dettagli.

La mia raccomandazione sarebbe quella di utilizzare uno strumento diverso per gestire le migrazioni.

1

Le soluzioni in questo articolo potrebbero funzionare per voi. Fai un ulteriore passo avanti nella creazione di una migrazione vuota che ignora le modifiche dall'altro sviluppatore. Questo aggiorna lo snapshot in sincronia con il database.

http://msdn.microsoft.com/en-us/data/dn481501.aspx