In primo luogo, ho letto queste domande/risposte:Impossibile eseguire la migrazione EF5 con database esistente
- EF-migration message
- How can I stop Add-Migration checking my database has no pending migrations when using Code-Based migrations?
- Make EF4.3 Code First Migrations ignore pending migrations
Questi tutti sembrano essere per EF versioni precedenti a EF5 e la mia situazione non sembra corrispondere a queste risposte. Quindi, permettimi di descrivere la mia situazione.
- La mia applicazione è stata originariamente creata utilizzando EF4, il primo modello. Ho progettato il mio database con il designer della GUI e l'ho usato per generare il mio database.
- Ho eseguito e raccolto dati nel database per alcuni mesi. Non posso davvero perdere questi dati.
- Ho ramificato il mio codice, ho installato EF5 con NuGet e ho utilizzato EF Power Tools per generare il mio modello dal mio database facendo clic con il pulsante destro del mouse su un nuovo progetto di libreria di classi e selezionando
Entity Framework | Reverse engineer code first
. - Sono stato in grado di ri-riferire facilmente al mio nuovo progetto, convertire il mio progetto per utilizzare il nuovo DbContext invece di ObjectContext e rimosso la libreria di classi EF4 che conteneva il mio vecchio modello. Il programma funziona alla grande!
Ora, voglio provare le migrazioni automatiche, con cui ho avuto un po 'di esperienza in Ruby on Rails. Ecco cosa ho fatto:
- Ran
Enable-Migrations
. Ho avuto un po 'di problemi a causa delle stringhe di connessione e di quale app.config si stava abituando, ma alla fine l'ho presa. Tuttavia, this MSDN page dice che questo dovrebbe aver generato automaticamente la prima migrazione per farmi arrivare al punto in cui mi trovo già. Non è stato così. - Ran
Add-Migration InitialSchema
per eseguire ciò che non è stato eseguito automaticamente nel passaggio 1. Ciò ha funzionato. - Aggiunto un immobile ad uno dei miei oggetti del modello, poi tentato di eseguire
Add-Migration AddSerialToLogEntries
, e stato presentato con:
Impossibile generare una migrazione esplicita, perché i seguenti migrazioni esplicite sono in attesa: [201307190100268_InitialSchema] . Applicare le migrazioni esplicite in sospeso prima di tentare di generare una nuova migrazione esplicita .
Tentativo di applicare la migrazione sul mio database esistente non riuscito, il che non è sorprendente.
Le altre risposte di cui sopra hanno sostanzialmente affermato che sono sfortunato, ma come ho detto quelle erano per versioni precedenti di Entity Framework. Ho qualche opzione qui?
Mentre scrivevo questa domanda, pensavo di poter utilizzare SQL Server Management Studio per esportare i miei dati in uno script SQL, eliminare l'intero database, lasciare che EF lo creasse, quindi eseguire gli script per riavere i miei dati in ... lo proverò domani quando avrò tempo, ma mi piacerebbe sapere se ci sono altre opzioni in quanto non sono sicuro al 100% che funzionerebbe e detesterei avere errori nei dati inseriti nel processo.
Grande, risposta dettagliata. Proverò i tuoi passi il prima possibile. So che posso "annullare" enable-migrations semplicemente eliminando la cartella Migrations, ma posso semplicemente svuotare i metodi Up e Down della prima migrazione invece di cancellarla e ricominciare da capo? – Steve
@Steve: Sì, dovrebbe funzionare altrettanto bene. – Slauma
Ha funzionato alla grande, grazie! – Steve