Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 36284|Svare: 0

[Kilde] EF Core Series (3) Entity Frame Shadow-attributter [Gjenutgivelse]

[Kopier lenke]
Publisert 7.2.2021 14:15:08 | | | |
EF Core Series 2 kapsler inn OnModelCreating, lager indekser ved hjelp av refleksjoner, og mer
https://www.itsvse.com/thread-9392-1-1.html

Shadow-egenskaper er egenskaper som ikke er definert i .NET-entitetsklassen, men som er definert for den entitetstypen i EF Core-modellen. Verdiene og tilstandene til disse attributtene vedlikeholdes utelukkende i endringssporeren. Skyggelagte egenskaper er nyttige når data i en database ikke skal eksponeres på den kartlagte entitetstypen.
Entity Framework-kjernen introduserer en ny type attributt kalt "shadow"-attributtet, som ikke finnes i EF 6.x.

Skyggeattributtet er ikke der. .NET-entitetsklasser. I stedet kan du konfigurere den for en spesifikk entitetstype i entitetsdatamodellen. Den kan konfigureres i OnModelCreating()-metoden i kontekstklassen.

Følgende diagram illustrerer skyggeattributten.



Som vist på bildet over, tilhører ikke shadow-attributtet din entity-klasse. Derfor kan du ikke få tilgang til den når du får tilgang til andre egenskaper ved en enhet. Skyggelagte egenskaper kan kun konfigureres for entitetstyper når man bygger entitetsdatamodellen, og de vil også bli kartlagt til databasekolonner. Verdien og tilstanden til skyggeegenskapen opprettholdes kun i endringssporeren.

La oss forstå de praktiske aspektene ved skyggeegenskaper. La oss si at vi må opprettholde opprettelses- og oppdateringsdatoene for hver post i databasetabellen. Du lærte hvordan du setter opprettelses- og endringsdatoer for enheter i EF Core ved å definere egenskapene CreatedDate og UpdatedDate i entity-klassen. Her skal vi se hvordan vi kan oppnå samme resultat ved å bruke skyggeegenskaper i stedet for å inkludere skyggeegenskaper i entitetsklassen.

Vurder følgende student-enhetsklasser.

Studentklassen ovenforAttributtene CreatedDate og UpdatedDate er ikke inkludertfor å opprettholde tiden da den ble opprettet eller oppdatert. Vi konfigurerer dem som skyggeegenskaper på Student-enheten.

Definer skyggeegenskaper

Du kan bruke OnModelCreating()-metoden for å definere skyggeegenskaper for entitetstyper ved hjelp av Fluent API.

Følgende konfigurasjon konfigurerer to skyggelagte egenskaper, CreatedDate og UpdatedDate, for Student-enheten.


Som du kan se, brukes Property()-metoden for å konfigurere skyggeegenskapene. Spesifiser navnet på shadow-egenskapen som en streng og typen som en generisk parameter. Hvis navnet som er spesifisert i Property()-metoden samsvarer med navnet på en eksisterende egenskap, vil EF Core konfigurere den eksisterende egenskapen som en skyggeegenskap i stedet for å introdusere en ny skyggeegenskap.

Skyggeegenskaper i databasen

Når skyggeegenskapene er definert, må vi oppdatere databaseskjemaet siden skyggeegenskapene vil bli kartlagt til de tilsvarende databasekolonnene.

For å gjøre dette, legg til en databasemigrering i Visual Studios Package Manager-konsoll ved å bruke følgende kommando.


Studenttabellen vil nå inkludere to kolonner, CreatedDate og UpdatedDate i SQL Server, som vist nedenfor.



Så selv om vi ikke inkluderer disse egenskapene i Student-klassen og konfigurerer dem som skyggeegenskaper, vil databasen ha de tilsvarende kolonnene.

Få tilgang til skyggeeiendommen

Du kan bruke Property()-metoden for å hente eller sette verdien på shadow-egenskapen i EntityEntry. Følgende kode gir tilgang til verdien av skyggeegenskapen.

Men i vårt scenario ønsker vi automatisk å sette verdiene til disse skyggeegenskapene i SaveChanges()-metoden, slik at vi slipper å sette dem manuelt på hvert entitetsobjekt. Så, overstyr SaveChanges()-metoden i kontekstklassen som vist nedenfor.

Dette vil automatisk sette verdier for skyggeegenskapene CreatedDate og UpdatedDate.

Nå kjører du følgende kode og sjekker postene i databasen.


Koden ovenfor vil sette inn følgende poster i CreatedDate og UpdatedDate for studenter.



Så ved å konfigurere shadow-egenskapene trenger vi ikke å inkludere dem i entity-klassen.

Konfigurer skyggeegenskapene på alle enheter

I stedet for å manuelt konfigurere skyggeegenskaper på alle enheter samtidig, kan du konfigurere dem manuelt.

For eksempel kan vi konfigurere alle enheter med CreatedDate og UpdatedDate sist, som vist i bildet nedenfor.


Når bør man bruke skyggeegenskapen?

Skyggeattributtet kan brukes i to situasjoner:

Når du ikke vil eksponere databasekolonner på kartlagte enheter, slik som i scenarioet diskutert ovenfor.
Når du ikke vil eksponere fremmednøkkelattributter, men kun bruke navigasjonsattributter for å håndtere relasjoner. Fremmednøkkelegenskapen vil være en skyggeegenskap og vil bli kartlagt til databasekolonnen, men vil ikke bli eksponert som en egenskap til enheten. (I EF Core, hvis du ikke definerer en fremmednøkkelegenskap i en entitetsklasse, vil den automatisk generere en skyggeegenskap for denne.) Du trenger ikke å konfigurere fremmednøkkelegenskaper manuelt. )


Ressurser:

Innloggingen med hyperkoblingen er synlig.
Innloggingen med hyperkoblingen er synlig.




Foregående:MySQL eksporterer spørringsresultatene til en fil
Neste:ASP.NET Core ViewComponent-veiledning om bruk av ViewComponent
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com