Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 37510|Răspunde: 1

[Sursă] Strategia de inițializare a bazei de date în EF 6 Code-First

[Copiază linkul]
Postat pe 17.04.2019 15:56:46 | | |
Ai creat deja o bază de date după ce ai rulat aplicația Code-First pentru prima dată, dar ce este după ce ai început a doua oară? Se creează o bază de date nouă de fiecare dată când aplicația este rulată? Dar mediul de producție? Cum schimb baza de date când schimb modelul domeniului? Pentru a gestiona aceste scenarii, trebuie să folosești una dintre politicile de inițializare a bazei de date.

Există patru strategii diferite de inițializare a bazei de date:

  • CreeazăBaza de DateIfNotExists:Acesta esteImplicitprocedura de inițializare. După cum sugerează și numele, va crea o bază de date dacă aceasta nu există conform configurației. Totuși, dacă schimbi clasa model și apoi rulezi aplicația cu acest inițializator, apare o excepție.
  • DropCreateDatabaseIfModelChanges: Dacă clasa modelului (clasa entității) s-a schimbat, acest inițializator va șterge baza de date existentă și va crea una nouă. Astfel, nu trebuie să-ți faci griji pentru menținerea schemelor de baze de date când se schimbă clasele modelului.
  • DropCreateDatabaseAlways: După cum sugerează și numele, acest inițializator șterge baza de date existentă de fiecare dată când rulezi aplicația, indiferent dacă clasa modelului s-a schimbat sau nu. Acest lucru este util atunci când ai nevoie de o bază de date nouă de fiecare dată când rulezi o aplicație, de exemplu la dezvoltarea unei aplicații.
  • Inițializator personalizat de baze de date: De asemenea, poți crea propriul tău inițializator personalizat dacă cele de mai sus nu corespund cerințelor tale sau dacă dorești să folosești inițializatorul de mai sus pentru a efectua procesul de inițializare a altor baze de date.

Pentru a folosi una dintre strategiile de inițializare a bazei de date de mai sus, trebuie să setați Inițializatorul DB folosind clasa din clasa de context Baza de date, așa cum se arată mai jos:




De asemenea, poți crea un inițializator personalizat pentru baza de date prin moștenirea unuia dintre inițializatoare, așa cum se arată mai jos:




În exemplul de mai sus, SchoolDBInitializer este o clasă de inițializator personalizată derivată din CreateDatabaseIfNotExists. Aceasta separă codul de inițializare a bazei de date de clasa de context.

Configurează inițializatorul DB în fișierul de configurare

Poți seta și inițializatorul de bază de date în fișierul de configurare. De exemplu, pentru a seta setarea implicită a valorii inițiale în app.config:




Poți configura un inițializator personalizat pentru baza de date astfel:




Închide inițializatorul de baze de date

Poți dezactiva inițializatorul bazei de date pentru aplicația ta.Presupunând că nu vrei să pierzi datele existente în producție, poți închide inițializatorul, după cum urmează:



De asemenea, poți dezactiva inițializatorul din fișierul de configurare, de exemplu:








Precedent:Criptografie Ilustrată Ediția a 3-a
Următor:Video despre clasa de angajare din aprilie 2018 din Silicon Valley
 Proprietarul| Postat pe 07.02.2021 15:08:59 |
Permite Entity Framework să înceapă, nu mai este valabil __MigrationHistory tabel
https://www.itsvse.com/thread-3255-1-1.html

Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com