Quali sono le migliori pratiche per garantire che le migrazioni di codice funzionino bene in un ambiente di team in cui sono presenti più database?

3

Stiamo appena iniziando a utilizzare l'approccio Entity Framework Code First e sto giocando con il sistema Code Migrations.

Quindi ci stavamo chiedendo, i file di migrazione pensati per essere trattati come codice generato e non dovrebbero essere modificati o dovrebbero essere generati per te come scaffold e quindi puoi aggiungere cose extra come valori predefiniti e dati extra ad esso?

Proprio perché l'avvio sembra come se fosse abbastanza facile avere il database fuori sincrono se una migrazione è stata eseguita in modo errato ei metodi Down () non necessariamente ripuliscono il metodo Up. E il problema è che non puoi davvero sapere se funziona finché non hai effettivamente bisogno di invertire la migrazione.

Inoltre, le migrazioni dovrebbero essere cambiate, eliminate o re-impalcate se sono state archiviate e sicuramente se sono state portate a un livello superiore? Perché posso vedere i membri del team A in una migrazione, quindi il membro del team B lo controlla e lo esegue, se il membro del team A lo modifica ora, quindi entrambi avrebbero versioni diverse dei database e potrebbe non esserci un modo semplice per invertirlo come tutti i file di migrazione sono stati modificati.

Sembra che le migrazioni di codice sembrino una tecnologia potente ma ci sono situazioni in cui i database non riescono a sincronizzarsi con il processo di migrazione e quindi sembra in un requisito di squadra, devono esserci alcune regole in atto.

Quali sono le migliori pratiche per garantire che le migrazioni di codice funzionino bene in un ambiente di squadra?

    
posta RoboShop 15.03.2017 - 23:57
fonte

1 risposta

2

So we were wondering, are the migration files intended to be treated as generated code and shouldn't be modified or are they supposed to be generated for you as a scaffold and then you can add extra things like default values and extra data to it?

Il add-migration dice letteralmente che è la scaffolding della classe per te. Puoi certamente entrare e aggiungere delle cose, anche se i dati extra sono fatti meglio attraverso il materiale di seeding disponibile nella configurazione di DbContext.

In generale, però, mai non li modificherò una volta effettuato il check-in. E non mi farebbe davvero contare sul fatto che siano reversibili se li modifichi del tutto. Se fallisci e hai bisogno di fare una correzione, puoi fare una nuova migrazione per farlo.

Da quello che ho visto, vengono trattati come script di modifica unidirezionali che EF può benissimo ordinare ed eseguire opzionalmente per te.

    
risposta data 16.03.2017 - 00:31
fonte

Leggi altre domande sui tag