8

Nel mio progetto abbiamo un modello di filiale con un ramo di sviluppo separato e un ramo separato per ogni versione. Può apparire come segue:Entity Framework 6 Codice Prime migrazioni: più rami per la produzione

dev   ______  ______ 
     / \ / \ 
master --+---+----+---+---+----+----+--- (...) 
      r1 \______/ r2 \_______/ 

Così si sviluppano su dev merge è di dominare e viene creato un ramo di release (R1, R2, ...).

Vogliamo utilizzare migrazioni EF 6 (manuali non automatiche) ma abbiamo una domanda a cui non sappiamo come rispondere.

Immaginate questo:

dev   _(1)__  ____(4) 
     / \ / \ 
master --+---+----+---+---+----+-(5)*-+--- (...) 
      r1 \_(2)__/ r2 \(3)______/ 

Ogni numero è una migrazione. Sono stati aggiunti al controllo sorgente su ciascun ramo E sono stati applicati ai database delle istanze di produzione del nostro progetto (supportiamo più versioni per un po 'di tempo solo per le correzioni), quindi non possiamo eseguirne il downgrade, possono andare solo su(). Asterisk segna il punto nel tempo che vogliamo analizzare. Vogliamo migrazioni di lavorare in questo modo:

  • database di R1 ha solo la migrazione (2) applicato
  • banca dati R2 ha (1), (2) e (3) applicato
  • database master ha (1) , (2), (4) e (5) applicato
  • efficienti dev ha (1), (2) e (4) applicato

inoltre:

  • non possiamo perdere un po 'di dati nel nostro database
  • deve essere possibile per il database r1 essere aggiornato al database r2 (o qualsiasi altra futura release) senza errori quindi ha la stessa struttura di database di tutti i database r2 (creato come r2 o aggiornato da versioni precedenti) che corrisponde al suo primo modello di codice.

Può essere fatto? Se sì, come?

Se avete bisogno di maggiori dettagli, si prega di chiedere.

risposta

11

potrei provare a spiegare che cosa si può fare in ogni caso, ma è piuttosto complesso e non sarei in grado di spiegarlo così come è spiegato qui:

Code First Migrations in Team Environments

Anche se è complesso e dovrai fare spesso riferimento a questo documento per unire i rami, se segui questo documento vedrai che risolve tutte le tue domande.

Disclaimer: So che SO dovrebbe essere autonomo, ma la spiegazione è così complessa e lunga che non riesco nemmeno ad aggiungere un abstract qui. Spero che i documenti MSDN collegati non scompaiano.

+0

Dopo un po 'di tempo di test e controllo posso confermare che sembra funzionare! Usiamo spesso "Opzione 1: aggiungere una" unione "vuota" migrazione ". Grazie! –

+0

Nei casi in cui il master è attivo, è meglio rigenerare le migrazioni dei rami feature per arrivare sempre dopo le migrazioni del ramo master per evitare confusione quando alcuni sviluppatori in un ramo di funzionalità hanno apportato modifiche di modello incompatibili con una data/ora di migrazione prima di alcune migrazioni nel master. – JustAMartin

+0

grazie per quel link, è stata una buona lettura! – Phil

Problemi correlati