Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 37510|Risposta: 1

[Fonte] Strategia di inizializzazione del database in EF 6 Code-First

[Copiato link]
Pubblicato su 17/04/2019 15:56:46 | | |
Hai già creato un database dopo aver eseguito l'applicazione Code-First per la prima volta, ma cosa succede dopo aver iniziato la seconda volta? Viene creato un nuovo database ogni volta che l'applicazione viene eseguita? E l'ambiente produttivo? Come posso cambiare il database quando cambio il modello di dominio? Per gestire questi scenari, devi utilizzare una delle policy di inizializzazione del database.

Esistono quattro diverse strategie di inizializzazione del database:

  • CreaDataDataSeNonEsiste:Questo èdefaultprocedura di inizializzazione. Come suggerisce il nome, creerà un database se non esiste secondo la configurazione. Tuttavia, se cambi la classe modello e poi esegui l'applicazione con questo inizializzatore, viene lanciata un'eccezione.
  • DropCreateDatabaseIfModelChanges: Se la tua classe modello (classe entità) è cambiata, questo inizializzatore eliminerà il database esistente e ne creerà uno nuovo. Quindi non devi preoccuparti di mantenere gli schemi del database quando cambiano le classi dei modelli.
  • DropCreateDatabaseAlways: Come suggerisce il nome, questo inizializzatore elimina il database esistente ogni volta che esegui l'applicazione, indipendentemente dal fatto che la classe modello sia cambiata o meno. Questo è utile quando hai bisogno di un nuovo database ogni volta che esegui un'applicazione, ad esempio durante lo sviluppo di un'applicazione.
  • Inizializzatore di database personalizzato: Puoi anche creare un tuo inizializzatore personalizzato se quanto sopra non soddisfa i tuoi requisiti, o se vuoi usare l'inizializzatore sopra per eseguire il processo di inizializzazione di altri database.

Per utilizzare una delle strategie di inizializzazione del DB sopra menzionate, devi impostare l'Inizializzatore del DB usando la classe nella classe contestuale del database, come mostrato di seguito:




Puoi anche creare un inizializatore personalizzato del database ereditando uno degli inizializatori, come mostrato di seguito:




Nell'esempio sopra, SchoolDBInitializer è una classe inizializzatore personalizzata derivata da CreateDatabaseIfNotExists. Questo separa il codice di inizializzazione del database dalla classe contesto.

Configura l'inizializzatore del database nel file di configurazione

Puoi anche impostare l'inizializzatore del database nel file di configurazione. Ad esempio, per impostare l'impostazione predefinita del valore iniziale in app.config:




Puoi configurare un inizializzatore personalizzato del database come segue:




Chiudi inizializzatore del database

Puoi disattivare l'inizializzatore del database per la tua applicazione.Supponendo che tu non voglia perdere i dati esistenti in produzione, puoi chiudere l'inizializzatore, come segue:



Puoi anche disattivare l'inizializzatore nel file di configurazione, ad esempio:








Precedente:Crittografia Illustrata 3ª Edizione
Prossimo:Video della classe occupazionale di aprile 2018 della Silicon Valley
 Padrone di casa| Pubblicato su 07/02/2021 15:08:59 |
Permette all'avvio del Entity Framework non più valido __MigrationHistory tabella
https://www.itsvse.com/thread-3255-1-1.html

Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com