Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 36284|Odpověď: 0

[Zdroj] EF Core Series (3) Entity Frame Shadow atributy [přetisk]

[Kopírovat odkaz]
Zveřejněno 7. 2. 2021 14:15:08 | | | |
EF Core Series 2 zapouzdřuje OnModelCreating, vytváří indexy pomocí odrazů a další
https://www.itsvse.com/thread-9392-1-1.html

Vlastnosti stínů jsou vlastnosti, které nejsou definovány v třídě entity .NET, ale jsou definovány pro tento typ entity v modelu EF Core. Hodnoty a stavy těchto atributů jsou udržovány čistě ve sledovači změn. Stínované vlastnosti jsou užitečné, když data v databázi nemají být vystavena na mapovaném typu entity.
Jádro Entity Framework zavádí nový typ atributu nazývaný "shadow" atribut, který v EF 6.x neexistuje.

Stínový atribut tam není. .NET entity class. Místo toho ho můžete nastavit pro konkrétní typ entity v datovém modelu entity. Lze jej nakonfigurovat metodou OnModelCreating() pro třídu kontextu.

Následující diagram ilustruje atribut stínu.



Jak je ukázáno na obrázku výše, atribut stínu nepatří do vaší třídy entity. Proto k němu nemůžete přistupovat při přístupu k jiným vlastnostem entity. Stínované vlastnosti lze při tvorbě datového modelu entity nastavit pouze pro typy entit a budou také mapovány na sloupce databáze. Hodnota a stav vlastnosti stínu jsou udržovány pouze ve sledovači změn.

Pojďme pochopit praktické aspekty vlastností stínů. Řekněme, že potřebujeme udržovat data vytvoření a aktualizace každého záznamu v databázové tabulce. Naučil jste se, jak nastavit data vytvoření a modifikace entit v EF Core definováním vlastností CreatedDate a UpdatedDate v třídě entity. Zde uvidíme, jak dosáhnout stejného výsledku použitím vlastností stínů místo zahrnutí vlastností stínů do třídy entity.

Zvažte následující třídy studentských entit.

Výše uvedená třída StudentAtributy CreatedDate a UpdatedDate nejsou zahrnutyaby se zachoval čas vytvoření nebo aktualizace. Konfigurujeme je jako stínové vlastnosti na entitě Student.

Definujte vlastnosti stínu

Můžete použít metodu OnModelCreating() k definování vlastností stínů pro typy entit pomocí Fluent API.

Následující konfigurace konfiguruje dvě stínované vlastnosti, CreatedDate a UpdatedDate, pro entitu Student.


Jak vidíte, metoda Property() se používá ke konfiguraci vlastností stínů. Zadejte název vlastnosti stínu jako řetězec a typ jako obecný parametr. Pokud název uvedený v metodě Property() odpovídá názvu existující vlastnosti, EF Core tuto stávající vlastnost nakonfiguruje jako stínovou vlastnost místo zavádění nové stínové vlastnosti.

Vlastnosti stínu v databázi

Jakmile jsou vlastnosti stínů definovány, musíme aktualizovat schéma databáze, protože vlastnosti stínu budou mapovány na příslušné sloupce databáze.

K tomu přidejte migraci databáze v konzoli Správce balíčků ve Visual Studiu pomocí následujícího příkazu.


Tabulka Student nyní bude obsahovat dva sloupce, CreatedDate a UpdatedDate v SQL Serveru, jak je uvedeno níže.



Takže i když tyto vlastnosti nezahrneme do třídy Student a nekonfigurujeme je jako stínové vlastnosti, databáze bude mít odpovídající sloupce.

Přístup k vlastnosti stínu

Můžete použít metodu Property() k získání nebo nastavení hodnoty vlastnosti stínu v EntityEntry. Následující kód přistupuje k hodnotě vlastnosti stínu.

V našem scénáři však chceme automaticky nastavit hodnoty těchto vlastností stínů v metodě SaveChanges(), abychom je nemuseli ručně nastavovat u každého entity objektu. Takže přepsejte metodu SaveChanges() v kontextové třídě, jak je uvedeno níže.

To automaticky nastaví hodnoty pro vlastnosti stínu CreatedDate a UpdatedDate.

Nyní spusťte následující kód a zkontrolujte záznamy v databázi.


Výše uvedený kód vloží následující záznamy do CreatedDate a UpdatedDate pro studenty.



Takže konfigurací vlastností stínů je nemusíme zahrnout do třídy entity.

Nastavte vlastnosti stínů na všech entitách

Místo ruční konfigurace vlastností stínů na všech entitách najednou je můžete nastavit ručně.

Například můžeme naposledy nastavit všechny entity CreatedDate a UpdatedDate, jak je vidět na následujícím obrázku.


Kdy použít vlastnost stínu?

Stínový atribut lze použít ve dvou situacích:

Když nechcete vystavovat databázové sloupce na mapovaných entitách, jako je scénář výše zmíněný.
Když nechcete zveřejňovat atributy cizích klíčů, ale chcete používat navigační atributy pouze ke správě vztahů. Vlastnost cizího klíče bude stínovou vlastností a bude mapována na sloupec databáze, ale nebude vystavena jako vlastnost entity. (V EF Core, pokud nedefinujete vlastnost cizího klíče v třídě entity, automaticky vygeneruje vlastnost stínu pro to.) Vlastnosti cizího klíče nemusíte ručně konfigurovat. )


Prostředky:

Přihlášení k hypertextovému odkazu je viditelné.
Přihlášení k hypertextovému odkazu je viditelné.




Předchozí:MySQL exportuje výsledky dotazu do souboru
Další:ASP.NET Základní tutoriál ViewComponent o používání ViewComponent
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com