Unisci le migrazioni in entity-framework-core

asp.net-core c# entity-framework entity-framework-core

Domanda

È possibile unire tutti i file di migrazione in uno?

Ho creato la migrazione iniziale.

dotnet ef migrations add InitialMigration

fonte

Ogni volta che cambio del modello, creo un nuovo aggiornamento della migrazione.

Ma ora ho troppi file di aggiornamento della migrazione. È possibile unire tutti i file di migrazione in uno?

Il drop database fuori rotta non è un'opzione, devo conservare i dati!

Risposta accettata

EF 6.X ha un'opzione IgnoreChanges . Questa è la soluzione perfetta per il tuo scenario. Ma sfortunatamente non è una funzionalità disponibile nel core EF.

Ma c'è una soluzione.

Passaggio 1: eliminare tutti gli script di migrazione nella cartella Migrations.

Passaggio 2: nella console del gestore pacchetti: eseguire

PM> Add-Migration InitialCreate

Passaggio 3: Elimina il codice dei metodi Up() e Down() . Prima di farlo, mantieni i metodi salvati altrove poiché ne avremo ancora bisogno nel passaggio 5.

Step 4: run:

 PM> Update-Database

__EFMigrationsHistory un nuovo record nella tabella __EFMigrationsHistory .

Passaggio 5: Successivamente, riempire il metodo Up() e Down() script precedente di migrazione (cioè .._InitialCreate ) dal contenuto tenuto in un luogo sicuro dal Passaggio 3 .

È così. Ora hai solo 1 file di migrazione :)

Nota: core EF con la console di gestione pacchetti (PM): Console Gestione pacchetti


Risposta popolare

Un modo per farlo è rimuovere tutti i file di migrazione fisicamente e aggiungerne uno nuovo. Se le migrazioni si trovano nella cartella "Migrazioni", puoi semplicemente eliminarlo, altrimenti devi eliminare anche il file "ModelSnapshot". Penso che questo approccio possa risolvere il tuo problema.



Related

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow