Sono su un progetto in cui stiamo utilizzando Code First su Entity Framework per il nostro database.Creazione programmatica di prime migrazioni
Vogliamo cambiare tutta la nostra continua integrazione per consumare un pacchetto MSI generato a valle, ma con EF che presenta alcune complicazioni.
- quando il modello cambia, dobbiamo generare una migrazione basata su codice altrimenti il pacchetto si romperà (Database vs Model)
- Noi preferiamo rimuovere la creazione delle migrazioni dal team (sulla base di https://msdn.microsoft.com/en-us/data/dn481501.aspx)
ho provato varie cose dal web, ma la maggior parte sembrano richiedere AutomaticMigrations
da impostare per true
così come AutomaticMigrationDataLossAllowed
(vedi: http://romiller.com/2012/02/09/running-scripting-migrations-from-code/).
Ho provato a replicare ciò che fa Add-Migration
guardando attraverso il reflector .NET ma non riesco a trovare un modo di richiamare il comando System.Data.Entity.Migrations.AddMigrationCommand
che viene chiamato tramite Powershell.
Qualcuno ha qualche idea su come posso avvicinarmi a realizzare questo senza fare qualcosa di estremamente disordinato? È qualcosa che penso che molte persone vorranno fare/hanno fatto ...
Molte grazie in anticipo!
Vuoi che questo strumento crei effettivamente file di migrazione e li aggiunga al progetto? O semplicemente aggiorna il database a quale è il tuo schema di codice corrente? Se è il secondo, perché le migrazioni automatiche non sono un'opzione? Se è il primo, non puoi semplicemente aggiungere un evento build che esegue il comando 'Aggiungi-Migrazione'? – Rob
@Rob Stiamo provando a creare uno strumento in base al quale il nostro CI può consumarlo e generare le nostre migrazioni per noi sul retro di un commit. Questo ci consentirà di creare automaticamente un MSI dal commit in modo che il modello rimanga sincronizzato con le migrazioni e il MSI non verrà interrotto. A causa delle dimensioni del nostro database, le migrazioni automatiche porteranno quasi certamente alla perdita automatica dei dati. 'Add-Migration' non sembra essere accessibile dall'esterno della shell VS – LukeHennerley
Potresti chiarire che" le migrazioni automatiche porteranno quasi certamente alla perdita di dati automatica ". Perché pensi che ci sia qualche differenza tra * il tuo script * in esecuzione Add-Migration e EF in esecuzione Add-Migration? O è solo che vuoi eseguire a volte le migrazioni manuali e vuoi evitare di mescolare auto/manuale? –