Quando aggiungo una nuova tabella che ha alcune relazioni con il mio database e quindi eseguo Add-Migration
Vedo che il codice è generato nel metodo Up
per aggiungere la tabella e le sue relazioni. Tuttavia, preferisco definire la relazione utilizzando l'API fluente nel metodo OnModelCreating
. Come interagiscono questi due metodi? Posso cancellare il codice dal metodo Up
che definisce la relazione per esempio?Come si riferiscono OnModelCreating e Migrazioni non automatiche?
risposta
Ognuno di loro ha scopo completamente diverso:
OnModelCreating
viene utilizzato per le definizioni in linea fluente-API del modello. Queste definizioni insieme a convenzioni di default, annotazioni di dati e classi di configurazione costituiscono la definizione completa del modello.- migrazione esplicita definisce ciò che si deve fare per database per migrare alla forma richiesta dal modello attuale
Ora, come quei due si riferiscono? La migrazione ha due input che vengono utilizzati per generare il codice di migrazione (metodi Up
e Down
). Un input è l'ultimo record di migrazione memorizzato nella tabella __MigrationHistory
nel database. Questo record contiene un modello serializzato che rappresenta il database. Questo input è facoltativo perché la prima migrazione deve funzionare senza di essa. Il secondo input è obbligatorio: è il modello corrente che viene recuperato eseguendo il codice nell'assieme corrente =>Add-Migration
eseguirà il tuo OnModelCreating
per ottenere il modello corrente e confrontarlo con il modello recuperato dal database. Il risultato del confronto è il contenuto dei metodi Up
e Down
nella migrazione esplicita.
- 1. Migrazioni EF: RenameColumn in Migrazioni automatiche?
- 2. EF 4.1 OnModelCreating non chiamato
- 3. EF 4.3 Migrazioni automatiche con più DbContexts in un database
- 4. EF: le migrazioni automatiche sono in esecuzione quando disabilitate
- 5. Come si riferiscono le metodologie Agile, Lean e Kanban?
- 6. OnModelCreating non definito in Entity Framework 7
- 7. classi python che si riferiscono l'una all'altra
- 8. Come avere soluzioni diverse si riferiscono a un file resx?
- 9. F # generalizzazione e prestazioni automatiche
- 10. Come fare un tag di ancoraggio si riferiscono a nulla?
- 11. MongoMapper e migrazioni
- 12. Larghezza e altezza automatiche per immagine SVG
- 13. C++ Soppressione Inizializzazione e distruzione automatiche
- 14. Compilare C++ quando due classi si riferiscono l'una all'altra
- 15. Update-Database tenta di eseguire una migrazione automatica anche con le migrazioni automatiche disabilitate
- 16. Lambdan anonimi che si riferiscono direttamente a se stessi
- 17. Le proprietà automatiche non funzionano in C#
- 18. Risoluzione delle dipendenze automatiche e manuali
- 19. Tabella SQL Azure non creata con Migrazioni EF
- 20. Come misurare una tela con altezza e larghezza automatiche
- 21. Django 1.8: Migrazioni non rilevate dopo l'eliminazione della cartella migrazioni
- 22. Ottieni righe dati automatiche
- 23. Perché Java non ha proprietà automatiche come C#?
- 24. Come impostare PHPExcel larghezza colonne automatiche
- 25. Parentesi automatiche complete in Mathematica
- 26. Come disabilitare le importazioni statiche Java automatiche?
- 27. Che cosa si aspettano i test-utils quando si riferiscono all'albero ReactComponent?
- 28. generatori e migrazioni in plugins (binari 3)
- 29. Perché i programmatori a volte si riferiscono a "C++/STL" come se fosse una lingua separata?
- 30. Code Prime migrazioni in SQL Azure - Le tabelle prive di indice cluster non sono supportate
Grazie! Quindi, se ho capito bene, il codice nel metodo "Su" rifletterà le definizioni impostate nel metodo "OnModelCreating" (supponendo che tu abbia aggiunto una Migrazione dopo aver scritto la definizione fluente dell'API ovviamente). Uno deve * non * rimuovere queste definizioni riflesse da 'Su'. – Dabblernl
Sì, è corretto. –