Ho riflettuto su questo e spero di contribuire alle diverse opinioni e pratiche presentate qui.
Considerare cosa rappresentano effettivamente le migrazioni locali. Quando lavoro localmente con un database di sviluppo, utilizzo le migrazioni per aggiornare il database nel modo più conveniente possibile aggiungendo colonne ecc. Alle tabelle, aggiungendo nuove entità ecc.
Quindi, controllo Add-Migration my modello corrente (let's chiamalo modello b) contro mio modello precedente (modello a) e genera una migrazione per passare da a => b nel database.
A me fa molto poco senso per cercare di unire i miei migrazioni con chiunque migrazioni altre famiglie, se ognuno ha infatti un proprio database e c'è poi esiste un qualche tipo di server stage/test/dev/database di produzione in l'organizzazione. Tutto dipende da come è stato impostato il team, ma ha senso isolarsi a vicenda dalle modifiche apportate da altre persone se si desidera lavorare veramente in modo distribuito.
Bene, se lavori distribuito e hai qualche entità, Persona, per esempio, su cui lavori. Per qualche motivo, molte altre persone ci stanno lavorando. Quindi, aggiungi e rimuovi le proprietà su Persona secondo necessità per la tua particolare storia nello sprint (stiamo lavorando tutti agilmente qui, no?), Come il numero di previdenza sociale che hai trasformato in un intero perché non sei quello luminoso e quindi a una stringa, ecc.
Aggiungere FirstName e LastName.
Si è fatto e si hanno dieci strane migrazioni su e giù (probabilmente ne sono state rimosse alcune mentre si lavorava da quando si trattava di merda) e si recuperano alcune modifiche dal repository Git centrale. Wow. Anche il tuo collega Bob aveva bisogno di alcuni nomi, forse avresti dovuto parlarci?
In ogni caso, ha aggiunto NameFirst e NameLast, credo ... quindi cosa fai? Bene, ti unisci, refactoring, cambia in modo che abbia nomi più sani ... come FirstName e LastName, tu esegui i tuoi test e controlli il suo codice, e poi spinga al centro.
Ma per quanto riguarda le migrazioni? Bene, ora sarebbe il momento di fare una migrazione spostando il repository centrale, o il ramo "test" più specificamente, contenere una piccola migrazione da il suo modello a => modello b. Questa migrazione sarà una e una sola migrazione, non dieci strane.
Vedete cosa sto ottenendo? Stiamo lavorando con bei piccoli pocos e i loro confronti costituiscono le migrazioni attuali. Quindi, non dovremmo fondere affatto le migrazioni, a mio avviso, dovremmo avere migrazioni per ramo o qualcosa del genere.
In effetti, abbiamo persino bisogno di creare la migrazione nel ramo dopo l'unione? Sì, se questo database viene aggiornato automaticamente, è necessario.
Devo lavorare ancora, quelli sono i miei pensieri su questo, almeno.
Funziona solo se si sta unendo dal ramo B al ramo A, quindi premendo su master; se il ramo A è già stato inviato al master e distribuito nell'ambiente live, e lo provi dal ramo B, fallirà. –
Prego elaborare "Questo" in "Funziona solo" e "Provalo dal ramo B". Se hai già A in master, puoi unire master a B, rescaffold, quindi spingere B a master. Potresti avere un caso d'uso problematico, elaborare un po 'quello che hai in mente. – oldwizard
C'è una bandiera chiamata "IgnoreChanges" che probabilmente vorresti usare se segui questa rotta –