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: 36284|Răspunde: 0

[Sursă] EF Core Series (3) Atribute Entity Frame Shadow [Reprint]

[Copiază linkul]
Postat la 2021-2-7 14:15:08 | | | |
EF Core Series 2 cuprinde OnModelCreating, creează indici folosind reflexii și multe altele
https://www.itsvse.com/thread-9392-1-1.html

Proprietățile umbră sunt proprietăți care nu sunt definite în clasa entității .NET, dar sunt definite pentru acel tip de entitate în modelul EF Core. Valorile și stările acestor atribute sunt menținute exclusiv în trackerul de schimbări. Proprietățile umbrite sunt utile atunci când datele dintr-o bază de date nu trebuie expuse pe tipul entității mapate.
Nucleul Entity Framework introduce un nou tip de atribut numit atributul "umbră", care nu există în EF 6.x.

Atributul umbră nu este acolo. .NET clase de entități. În schimb, îl poți configura pentru un anumit tip de entitate în modelul de date al entității. Poate fi configurat în metoda OnModelCreating() a clasei context.

Diagrama următoare ilustrează atributul umbră.



Așa cum se arată în imaginea de mai sus, atributul umbră nu aparține clasei tale de entitate. Prin urmare, nu poți accesa acest lucru când accesezi alte proprietăți ale unei entități. Proprietățile umbrite pot fi configurate doar pentru tipurile de entități la construirea modelului de date al entității și vor fi, de asemenea, mapate pe coloanele bazei de date. Valoarea și starea proprietății umbră sunt păstrate doar în trackerul de schimbări.

Să înțelegem aspectele practice ale proprietăților umbrei. Să presupunem că trebuie să menținem datele de creare și actualizare ale fiecărei înregistrări din tabelul bazei de date. Ai învățat cum să setezi datele de creare și modificare pentru entități în EF Core definind proprietățile CreatedDate și UpdatedDate în clasa entității. Aici vom vedea cum să obținem același rezultat folosind proprietățile umbrei în loc să includem proprietățile umbrei în clasa entității.

Luați în considerare următoarele cursuri pentru entitatea studențească.

Clasa de studenți de mai susAtributele CreatedDate și UpdatedDate nu sunt inclusepentru a menține timpul în care a fost creat sau actualizat. Le configurăm ca proprietăți umbră pe entitatea Student.

Definirea proprietăților umbrei

Poți folosi metoda OnModelCreating() pentru a defini proprietăți de umbră pentru tipurile de entități folosind API-ul Fluent.

Următoarea configurație configurează două proprietăți umbrite, CreatedDate și UpdatedDate, pentru entitatea Student.


După cum vezi, metoda Property() este folosită pentru a configura proprietățile umbrei. Specifică numele proprietății umbră ca un șir și tipul ca parametru generic. Dacă numele specificat în metoda Property() corespunde cu numele unei proprietăți existente, EF Core va configura acea proprietate existentă ca proprietate umbră în loc să introducă o nouă proprietate umbră.

Proprietăți umbre în baza de date

Odată ce proprietățile umbrelor sunt definite, trebuie să actualizăm schema bazei de date, deoarece proprietățile umbrei vor fi mapate pe coloanele corespunzătoare ale bazei de date.

Pentru a face acest lucru, adăugați o migrare a bazei de date în consola Package Manager a Visual Studio folosind următoarea comandă.


Tabelul Student va include acum două coloane, CreatedDate și UpdatedDate în SQL Server, așa cum se arată mai jos.



Deci, chiar dacă nu includem aceste proprietăți în clasa Student și nu le configurăm ca proprietăți umbră, baza de date va avea coloanele corespunzătoare.

Accesează proprietatea umbră

Poți folosi metoda Property() pentru a obține sau seta valoarea proprietății umbră în EntityEntry. Codul următor accesează valoarea proprietății umbră.

Totuși, în scenariul nostru, vrem să setăm automat valorile pentru aceste proprietăți de umbră în metoda SaveChanges(), astfel încât să nu fie nevoie să le setăm manual pe fiecare obiect entitate. Așadar, înlocuiește metoda SaveChanges() din clasa de context, așa cum se arată mai jos.

Acest lucru va seta automat valorile pentru proprietățile shadow CreatedDate și UpdatedDate.

Acum, executați următorul cod și verificați înregistrările din baza de date.


Codul de mai sus va introduce următoarele înregistrări în CreatedDate și UpdatedDate pentru Studenți.



Așadar, configurând proprietățile umbrelor, nu trebuie să le includem în clasa entității.

Configurează proprietățile umbrelor pentru toate entitățile

În loc să configurezi manual proprietățile umbrelor pe toate entitățile deodată, le poți configura manual.

De exemplu, putem configura toate entitățile din CreatedDate și UpdatedDate data trecută, așa cum se arată în imaginea următoare.


Când să folosești proprietatea de umbră?

Atributul umbră poate fi folosit în două situații:

Când nu vrei să expui coloanele bazei de date pe entități mapate, cum ar fi scenariul discutat mai sus.
Când nu vrei să expui atributele cheii străine, ci doar să folosești atributele de navigare pentru a gestiona relațiile. Proprietatea cheie străină va fi o proprietate umbră și va fi mapată pe coloana bazei de date, dar nu va fi expusă ca proprietate a entității. (În EF Core, dacă nu definești o proprietate de cheie străină într-o clasă de entitate, aceasta va genera automat o proprietate umbră pentru aceasta.) Nu trebuie să configurezi manual proprietățile cheilor străine. )


Resurse:

Autentificarea cu hyperlink este vizibilă.
Autentificarea cu hyperlink este vizibilă.




Precedent:MySQL exportă rezultatele interogării într-un fișier
Următor:ASP.NET Tutorial de bază ViewComponent despre utilizarea ViewComponent
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