Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 36284|Odgovoriti: 0

[Vir] EF Core Series (3) Atributi senc okvirja entitet [ponatis]

[Kopiraj povezavo]
Objavljeno 7. 2. 2021 ob 14:15:08 | | | |
EF Core Series 2 kapsulira OnModelCreating, ustvarja indekse z odsevi in še več
https://www.itsvse.com/thread-9392-1-1.html

Lastnosti senc so lastnosti, ki niso definirane v .NET razredu entitet, so pa določene za ta tip entitete v EF Core modelu. Vrednosti in stanja teh atributov se ohranjajo izključno v sledilniku sprememb. Senčene lastnosti so uporabne, kadar podatki v bazi podatkov ne smejo biti izpostavljeni na preslikani entiteti.
Jedro Entity Framework uvaja novo vrsto atributa, imenovano atribut "senca", ki pa v EF 6.x ne obstaja.

Atribut senca ni tam. .NET entitetni razredi. Namesto tega ga lahko konfigurirate za določen tip entitete v podatkovnem modelu entitete. Lahko ga konfiguriramo v metodi OnModelCreating() za razred konteksta.

Naslednji diagram prikazuje atribut sence.



Kot je prikazano na zgornji sliki, atribut senca ne pripada vašemu razredu entitete. Zato do nje ne morete dostopati, ko dostopate do drugih lastnosti entitete. Senčene lastnosti je mogoče konfigurirati le za tipe entitet pri gradnji podatkovnega modela entitet, prav tako pa bodo preslikane v stolpce baze podatkov. Vrednost in stanje lastnosti sence se ohranjata le v sledilniku sprememb.

Poglejmo praktične vidike lastnosti senc. Recimo, da moramo vzdrževati datume ustvarjanja in posodabljanja vsakega zapisa v tabeli baze podatkov. Naučili ste se nastaviti datume ustvarjanja in sprememb entitet v EF Core tako, da ste v razredu entitete določili lastnosti CreatedDate in UpdatedDate. Tukaj bomo videli, kako doseči enak rezultat z uporabo lastnosti senc namesto vključevanja lastnosti senc v razred entitet.

Razmislite o naslednjih študentskih entitetnih razredih.

Zgornji razred učencevAtributa CreatedDate in UpdatedDate nista vključenada ohrani čas, ko je bil ustvarjen ali posodobljen. Konfiguriramo jih kot sence lastnosti na entiteti Študent.

Definirajte lastnosti senc

Uporabite lahko metodo OnModelCreating() za definiranje lastnosti senc za tipe entitet z uporabo Fluent API-ja.

Naslednja konfiguracija konfigurira dve senčeni lastnosti, CreatedDate in UpdatedDate, za entiteto Student.


Kot vidite, se metoda Property() uporablja za konfiguracijo lastnosti senc. Ime lastnosti senc določimo kot niz in tip kot generični parameter. Če se ime, določeno v metodi Property(), ujema z imenom obstoječe lastnosti, bo EF Core to obstoječo lastnost konfiguriral kot senčno lastnost, namesto da bi uvedel novo senčno lastnost.

Lastnosti senc v podatkovni bazi

Ko so lastnosti senc definirane, moramo posodobiti shemo baze podatkov, saj bodo lastnosti senc preslikane v ustrezne stolpce baze podatkov.

Za to dodajte migracijo baze podatkov v konzolo Package Manager v Visual Studiu z naslednjim ukazom.


Tabela Študent bo zdaj vključevala dva stolpca, CreatedDate in UpdatedDate v SQL Serverju, kot je prikazano spodaj.



Torej, tudi če teh lastnosti ne vključimo v razred Student in jih ne konfiguriramo kot senčne lastnosti, bo baza podatkov imela ustrezne stolpce.

Dostop do sence lastnine

Uporabite lahko metodo Property() za pridobitev ali nastavitev vrednosti shadow lastnosti v EntityEntry. Naslednja koda dostopa do vrednosti lastnosti sence.

Vendar pa v našem primeru želimo samodejno nastaviti vrednosti teh senčnih lastnosti v metodi SaveChanges(), da jih ne bi morali ročno nastaviti na vsakem entitetnem objektu. Torej, preglasite metodo SaveChanges() v kontekstnem razredu, kot je prikazano spodaj.

To bo samodejno nastavilo vrednosti za lastnosti senc CreatedDate in UpdatedDate.

Zdaj izvedite naslednjo kodo in preverite zapise v bazi podatkov.


Zgornja koda bo vnesla naslednje zapise v CreatedDate in UpdatedDate for Students.



Torej, s konfiguracijo lastnosti senc jih ni treba vključiti v razred entitet.

Nastavite lastnosti senc na vseh entitetah

Namesto da bi ročno nastavljali lastnosti senc na vseh entitetah hkrati, jih lahko nastavite ročno.

Na primer, lahko konfiguriramo vse entitete CreatedDate in UpdatedDate zadnjič, kot je prikazano na naslednji sliki.


Kdaj uporabiti lastnost sence?

Atribut senca se lahko uporabi v dveh primerih:

Ko ne želite izpostavljati stolpcov baze podatkov na preslikanih entitetah, kot je opisan zgoraj.
Ko ne želite razkriti atributov tujih ključev, ampak želite uporabljati navigacijske atribute le za upravljanje odnosov. Lastnost tujega ključa bo shadow lastnost in bo preslikana v stolpec baze podatkov, vendar ne bo razkrita kot lastnost entitete. (V EF Core, če v razredu entitete ne definirate lastnosti tujega ključa, bo samodejno generiral shadow lastnost za to.) Ni vam treba ročno konfigurirati lastnosti tujih ključev. )


Sredstva:

Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna.




Prejšnji:MySQL izvozi rezultate poizvedb v datoteko
Naslednji:ASP.NET Osnovni vodič za ViewComponent o uporabi ViewComponent
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com