Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 36284|Válasz: 0

[Forrás] EF Core Series (3) Entity Frame árnyék attribútumok [Újranyomás]

[Linket másol]
Közzétéve: 2021-2-07 14:15:08 | | | |
Az EF Core Series 2 beépíti az OnModelCreating-et, indexeket hoz létre tükröződések segítségével, és még sok más
https://www.itsvse.com/thread-9392-1-1.html

Az árnyéktulajdonságok olyan tulajdonságok, amelyek nem definiálódnak a .NET entitásosztályban, de az EF Core modellben az adott entitástípusra vannak definiálva. Ezeknek az attribútumoknak az értékei és állapotai kizárólag a változáskövetőben vannak fenntartva. Az árnyékolt tulajdonságok akkor hasznosak, ha az adatbázisban szereplő adatok nem szabadnak a leképezett entitástípuson elérhetővé válni.
Az Entity Framework magja bevezet egy új attribútumtípust, az úgynevezett "árnyék" attribútumot, amely az EF 6.x-ben nem létezik.

Az árnyék attribútum nincs ott. .NET entitásosztályok. Ehelyett konfigurálhatod egy adott entitástípusra az entitás-adatmodellben. Konfigurálható a kontextusosztály OnModelCreating() metódusával.

A következő ábra illusztrálja az árnyék attribútumot.



Ahogy a fenti képen is látható, az árnyék attribútum nem tartozik az entitásosztályodhoz. Ezért nem lehet hozzá férni, amikor egy entitás más tulajdonságaihoz kell hozzáférni. Az árnyékolt tulajdonságokat csak entitástípusokra lehet konfigurálni az entitásadatmodell építésekor, és ezek adatbázis-oszlopokhoz is leképezhetők. Az árnyék tulajdonság értéke és állapota csak a változáskövetőben marad fenn.

Értsük meg az árnyéktulajdonságok gyakorlati aspektusait. Tegyük fel, hogy minden rekord létrehozási és frissítési dátumait kell fenntartanunk az adatbázis táblában. Megtanultad, hogyan állítod be az ENTIZATOK létrehozási és módosítási dátumait az ENTIZATOSZTÁLYBAN a CreatedDate és UpdatedDate tulajdonságok meghatározásával. Itt meglátjuk, hogyan érhetjük el ugyanazt az eredményt árnyéktulajdonságok használatával az entitásosztály helyett.

Vegyük figyelembe az alábbi hallgatói egység osztályokat.

A fent említett diákosztályA CreatedDate és UpdatedDate attribútumok nem szerepelnekhogy megőrizze a létrehozás vagy frissítés idejét. Árnyéktulajdonságokként konfiguráljuk őket a Diák entitáson.

Árnyéktulajdonságok definiálása

Az OnModelCreating() módszerrel árnyéktulajdonságokat definiálhatsz entitástípusokhoz a Fluent API segítségével.

A következő konfiguráció két árnyékolt tulajdonságot, a CreatedDate és a UpdatedDate beállításokat konfigurálja a Hallgató entitás számára.


Ahogy látod, a Property() metódó a shadow tulajdonságok konfigurálásához szolgál. Megadjuk az árnyék tulajdonság nevét stringként, a típust pedig általános paraméterként. Ha az Property() metódusban megadott név megegyezik egy meglévő tulajdonság nevével, az EF Core árnyéktulajdonságként konfigurálja azt a meglévő tulajdonságot árnyéktulajdonságként ahelyett, hogy új árnyéktulajdonságot vezetne be.

Árnyéktulajdonságok az adatbázisban

Miután az árnyéktulajdonságok definiálva vannak, frissítenünk kell az adatbázis sémát, mivel az árnyéktulajdonságok a megfelelő adatbázis oszlopokhoz kerülnek leképezve.

Ehhez adj hozzá adatbázis-migrációt a Visual Studio Package Manager konzoljában a következő parancs segítségével.


A Diák táblázat most két oszlopot tartalmaz, CreatedDate és UpdatedDate SQL Serverben, ahogy az alábbiakban látható.



Tehát még ha nem is tüntetjük be ezeket a tulajdonságokat a Student osztályba, és nem állítjuk be árnyék tulajdonságokként, az adatbázis megkapja a megfelelő oszlopokat.

Hozzáférés az árnyék tulajdonsághoz

A Property() metódumust használhatod, hogy megkapd vagy beállítsd az árnyéktulajdonság értékét az EntityEntry-ben. A következő kód eléri az árnyék tulajdonság értékét.

Azonban a mi helyzetünkben automatikusan be akarjuk állítani ezeket az árnyéktulajdonságokat a SaveChanges() metódusban, hogy ne kelljen manuálisan beállítanunk ezeket minden entitásobjektumon. Tehát felülírd a SaveChanges() metódust a context osztályban, ahogy az alábbiakban látható.

Ez automatikusan beállítja a CreatedDate és UpdatedDate árnyék tulajdonságok értékét.

Most hajtsd végre a következő kódot, és ellenőrizd az adatbázisban lévő rekordokat.


A fenti kód a következő bejegyzéseket illeszti be a CreatedDate és UpdatedDate menükbe a Diákok számára.



Tehát az árnyéktulajdonságok konfigurálásával nem kell őket az entitásosztályba illesztenünk.

Konfiguráld az árnyéktulajdonságokat minden entitáson

Ahelyett, hogy egyszerre konfigurálnád az árnyék tulajdonságait minden entitáson, manuálisan is konfigurálhatod őket.

Például legutóbb konfigurálhatjuk a CreatedDate és UpdatedDate összes entitását, ahogy az alábbi képen is látható.


Mikor kell használni az árnyék tulajdonságot?

Az árnyék attribútumot két helyzetben lehet használni:

Amikor nem akarod adatbázis-oszlopokat megjeleníteni leképezett entitásoknál, mint például a fent említett eset.
Amikor nem akarod felfedni az idegen kulcs attribútumokat, hanem csak navigációs attribútumokat használsz a kapcsolatok kezelésére. Az idegen kulcs tulajdonság árnyéktulajdonság lesz, és az adatbázis oszlopához lesz leképezve, de nem lesz kitéve az entitás tulajdonságaként. (Az EF Core-ban, ha nem definiálsz idegen kulcs tulajdonságot egy entitásosztályban, automatikusan generál egy árnyék tulajdonságot erre.) Nem kell manuálisan konfigurálnod az idegen kulcs tulajdonságait. )


Erőforrások:

A hiperlink bejelentkezés látható.
A hiperlink bejelentkezés látható.




Előző:A MySQL exportálja a lekérdezés eredményeit egy fájlba
Következő:ASP.NET Core ViewComponent oktató útmutató a ViewComponent használatához
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com