2013-09-16 13 views
5

Fino a oggi ero in esecuzione con successo Entity framework 6.0.0-alpha3. Oggi ho deciso di aggiornare a Entity framework 6.0.0-rc1 e, come specificato here, per eseguire le mie migrazioni, ho bisogno di rimuovere tutte le precedenti migrazioni effettuate da ef alpha1-alpha3 e di rifarle.La migrazione del framework di entità non rileva alcuna modifica

Poiché tutte le mie migrazioni sono state apportate da alpha3, ho deciso di eliminare tutte le migrazioni (inclusa la tabella _MigrationHistory) e di riattivarlo.

ho creato migrazione iniziale con add-migration Initial -IgnoreChanges (che ha vuoti Up() e Down() metodi), quindi ho eseguito update-database, e ho pensato che tutto va bene. Beh, non è così. Quando aggiungo nuova classe al mio modello, add-migration first crea la migrazione con i metodi vuoti Up() e Down().

Inoltre, in precedenza, quando volevo accedere all'oggetto che non era ancora registrato con le migrazioni, ricevevo un errore che diceva che dovevo aggiornare le mie migrazioni. Ora, quando provo ad accedere al nuovo oggetto, semplicemente dice "Invalid object name 'dbo.Notifications'.".

Cosa faccio adesso?

risposta

6

EF utilizza un'istantanea del modello di database (che viene salvato insieme alla migrazione) per determinare le modifiche tra la versione corrente del modello di database e l'ultima migrazione.

Il comando add-migration Initial -IgnoreChanges crea una migrazione con lo snapshot del modello di database, ma ignora qualsiasi modifica dallo snapshot del database precedente (vale a dire il database vuoto) perché si sta dicendo di farlo.

Il comando esamina la migrazione precedente (ad esempio Iniziale) e confronta l'istantanea del modello di database corrente con il modulo snapshot della migrazione Initial. Ovviamente queste istantanee sono le stesse, quindi i metodi Up() e Down() sono vuoti.

Penso che la soluzione per il vostro problema è quello di generare tutti i cambiamenti nella migrazione iniziale

add-migration Initial

1

ho incontrato un problema per cui entità non è stata riconoscendo i miei cambiamenti, anche se ho aggiunto una nuova classe di entità all'assemblea non lo vedrebbe ancora.

Sono appena tornato a una migrazione quando ricordo che tutto andava bene, cancellato tutti i file di migrazione dopo quella migrazione ed eseguivo di nuovo Add-Migration. Poi finalmente tutte le modifiche combinate si presentarono.

+0

Solo per aggiungere a questo, ho riscontrato il problema di nuovo e questa volta l'unica cosa che ha risolto è un "Batch Build" (con ricostruzione). È sotto il menu Debug, credo. Nota che questo non è lo stesso di un luogo Ricostruisci perché non ha funzionato per me. – parliament

0

Avevo anche up/down vuoto e la causa era che EF non amava che i miei modelli avessero [JsonProperty] sopra le loro proprietà, dal momento che usavo gli stessi modelli anche per un datasource JSON.

+0

Sei sicuro? Non ho mai notato alcuna interferenza con questo attributo. Si prega di mostrare i dettagli su quando l'attributo causa problemi. –