Durante il processo di sviluppo possono apparire molte migrazioni. C'è qualche motivo per tenerli invece di unirli tutti insieme?
Diamo un'occhiata a un semplice esempio.
Durante lo sviluppo introduciamo un nuovo modello Person
:
public class Person {
public int Id { get; set; }
public string Name { get; set; }
}
La migrazione # 1 crea una nuova tabella Persons
con due campi nel database.
Successivamente abbiamo deciso di avere bisogno di un altro campo - Surname
. La tabella di modifica n. 2 della migrazione aggiunge un nuovo campo.
Successivamente abbiamo deciso di introdurre un nuovo modello correlato, quindi Migration # 3 crea una nuova tabella e modifica Persons
aggiungendo la chiave esterna.
Successivamente abbiamo deciso di rimuovere Surname
. La migrazione n. 4 modifica la tabella rimuovendo la colonna.
Successivamente abbiamo deciso di rinominare la forma plurale di Persons
in Person
. La migrazione # 5 rimuove tutte le chiavi esterne, la tabella dei caratteri latini rinominandola, crea nuove chiavi esterne.
Alla fine abbiamo un sacco di migrazioni che fanno il lavoro indietro di un tempo per creare e rimuovere alcuni campi che non abbiamo bisogno nella versione finale. Questi campi, insieme ad altre possibili azioni di migrazione, sono solo una parte della storia dello sviluppo, ma non ne abbiamo davvero bisogno.
Quindi stavo pensando a cosa fare se ripristino il database al primissimo stato, rimuovi tutte le migrazioni e poi ne creo uno nuovo, che farà solo azioni nessune per portare un database al suo stato finale, riducendo un numero possibilmente enorme di migrazioni e azioni exessive a una sola migrazione diretta.
È una buona idea o è considerato un anti-pattern?