Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 36284|Svar: 0

[Kilde] EF Core Series (3) Entity Frame Skyggeattributter [Genoptryk]

[Kopier link]
Opslået den 7-2-2021 14:15:08 | | | |
EF Core Series 2 indkapsler OnModelCreating, opretter indekser ved hjælp af refleksioner og mere
https://www.itsvse.com/thread-9392-1-1.html

Shadow-egenskaber er egenskaber, der ikke er defineret i .NET-entity-klassen, men som er defineret for den entity-type i EF Core-modellen. Værdierne og tilstandene for disse attributter vedligeholdes udelukkende i ændringssporet. Skyggede egenskaber er nyttige, når data i en database ikke bør eksponeres på den kortlagte entitetstype.
Entity Framework-kernen introducerer en ny type attribut kaldet "shadow"-attributten, som ikke findes i EF 6.x.

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

Følgende diagram illustrerer skyggeattributten.



Som vist på billedet ovenfor, tilhører skyggeattributten ikke din entitetsklasse. Derfor kan du ikke få adgang til den, når du tilgår andre egenskaber for en enhed. Skyggede egenskaber kan kun konfigureres til entitetstyper, når entitetsdatamodellen bygges, og de vil også blive kortlagt til databasekolonner. Værdien og tilstanden af skyggeegenskaben vedligeholdes kun i ændringssporet.

Lad os forstå de praktiske aspekter af skyggeegenskaber. Lad os sige, at vi skal vedligeholde oprettelses- og opdateringsdatoerne for hver post i databasetabellen. Du lærte, hvordan du sætter oprettelses- og ændringsdatoer for enheder i EF Core ved at definere CreatedDate- og UpdatedDate-egenskaberne i entity-klassen. Her vil vi se, hvordan man opnår det samme resultat ved at bruge skyggeegenskaber i stedet for at inkludere skyggeegenskaber i entitetsklassen.

Overvej følgende Student entity-klasser.

Studenterklassen ovenforAttributterne CreatedDate og UpdatedDate er ikke inkluderetfor at bevare tiden, hvornår den blev oprettet eller opdateret. Vi konfigurerer dem som skyggeegenskaber på Student-enheden.

Definér skyggeegenskaber

Du kan bruge OnModelCreating()-metoden til at definere skyggeegenskaber for entitetstyper ved hjælp af Fluent API'en.

Følgende konfiguration konfigurerer to skyggelagte egenskaber, CreatedDate og UpdatedDate, for Student-enheden.


Som du kan se, bruges Property()-metoden til at konfigurere skyggeegenskaberne. Angiv navnet på skyggeegenskaben som en streng og typen som en generisk parameter. Hvis det navn, der er angivet i Property()-metoden, matcher navnet på en eksisterende egenskab, vil EF Core konfigurere den eksisterende egenskab som en skyggeegenskab i stedet for at introducere en ny skyggeegenskab.

Skyggeegenskaber i databasen

Når skyggeegenskaberne er defineret, skal vi opdatere databaseskemaet, da skyggeegenskaberne vil blive kortlagt til de tilsvarende databasekolonner.

For at gøre dette skal du tilføje en databasemigrering i Visual Studios Package Manager-konsol ved hjælp af følgende kommando.


Student-tabellen vil nu inkludere to kolonner, CreatedDate og UpdatedDate i SQL Server, som vist nedenfor.



Så selv hvis vi ikke inkluderer disse egenskaber i Student-klassen og konfigurerer dem som skyggeegenskaber, vil databasen have de tilsvarende kolonner.

Få adgang til skyggeejendommen

Du kan bruge Property()-metoden til at hente eller indstille værdien af shadow-egenskaben i EntityEntry. Følgende kode tilgår værdien af skyggeegenskaben.

Men i vores scenarie vil vi automatisk sætte værdierne til disse skyggeegenskaber i SaveChanges()-metoden, så vi ikke behøver at sætte dem manuelt på hvert entitetsobjekt. Så overskriv SaveChanges()-metoden i kontekstklassen som vist nedenfor.

Dette vil automatisk sætte værdier for skyggeegenskaberne CreatedDate og UpdatedDate.

Udfør nu følgende kode og tjek posterne i databasen.


Ovenstående kode vil indsætte følgende poster i CreatedDate og UpdatedDate for Students.



Så ved at konfigurere skyggeegenskaberne behøver vi ikke inkludere dem i entitetsklassen.

Konfigurer skyggeegenskaberne på alle enheder

I stedet for manuelt at konfigurere skyggeegenskaber på alle enheder på én gang, kan du konfigurere dem manuelt.

For eksempel kan vi konfigurere alle enheder af CreatedDate og UpdatedDate sidste gang, som vist på det følgende billede.


Hvornår skal man bruge skygge-ejendommen?

Skyggeattributten kan bruges i to situationer:

Når du ikke ønsker at eksponere databasekolonner på kortlagte enheder, som i scenariet diskuteret ovenfor.
Når du ikke vil eksponere fremmednøgleattributter, men kun vil bruge navigationsattributter til at håndtere relationer. Fremmednøgleegenskaben vil være en skyggeegenskab og vil blive kortlagt til databasekolonnen, men vil ikke blive eksponeret som en egenskab for entiteten. (I EF Core, hvis du ikke definerer en fremmednøgleegenskab i en entitetsklasse, vil den automatisk generere en skyggeegenskab for dette.) Du behøver ikke manuelt konfigurere fremmednøgleegenskaber. )


Ressourcer:

Hyperlink-login er synlig.
Hyperlink-login er synlig.




Tidligere:MySQL eksporterer forespørgselsresultaterne til en fil
Næste:ASP.NET Core ViewComponent vejledning om brug af ViewComponent
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com