Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 36284|Svar: 0

[Källa] EF Core Series (3) Entity Frame Shadow Attributes [Omtryck]

[Kopiera länk]
Publicerad den 2021-2-7 14:15:08 | | | |
EF Core Series 2 kapslar in OnModelCreating, skapar index med reflektioner och mer
https://www.itsvse.com/thread-9392-1-1.html

Skuggegenskaper är egenskaper som inte är definierade i .NET-entitetsklassen men är definierade för den entitetstypen i EF Core-modellen. Värdena och tillstånden för dessa attribut underhålls enbart i förändringsspåret. Skuggade egenskaper är användbara när data i en databas inte ska exponeras på den mappade entitetstypen.
Entity Frameworks kärna introducerar en ny typ av attribut kallad "shadow"-attributet, som inte finns i EF 6.x.

Skuggattributet finns inte där. .NET-entitetsklasser. Istället kan du konfigurera den för en specifik entitetstyp i entitetsdatamodellen. Den kan konfigureras i OnModelCreating()-metoden för kontextklassen.

Följande diagram illustrerar skuggattributet.



Som visas på bilden ovan tillhör inte shadow-attributet din entity-klass. Därför kan du inte komma åt den när du använder andra egenskaper hos en entitet. Skuggade egenskaper kan endast konfigureras för entitetstyper när entitetsdatamodellen byggs, och de kommer också att mappas till databaskolumner. Värdet och tillståndet för skuggegenskapen underhålls endast i förändringsspåraren.

Låt oss förstå de praktiska aspekterna av skuggegenskaper. Låt oss säga att vi behöver hålla upprättelse- och uppdateringsdatum för varje post i databastabellen. Du lärde dig hur man sätter skapande- och modifieringsdatum för entiteter i EF Core genom att definiera egenskaperna CreatedDate och UpdatedDate i entitetsklassen. Här ska vi se hur man uppnår samma resultat genom att använda skuggegenskaper istället för att inkludera skuggegenskaper i entitetsklassen.

Betrakta följande student-entitetsklasser.

Studentklassen ovanAttributen CreatedDate och UpdatedDate ingår inteför att behålla tiden när den skapades eller uppdaterades. Vi konfigurerar dem som skuggegenskaper på Student-enheten.

Definiera skuggegenskaper

Du kan använda metoden OnModelCreating() för att definiera skuggegenskaper för entitetstyper med hjälp av Fluent API.

Följande konfiguration konfigurerar två skuggade egenskaper, CreatedDate och UpdatedDate, för Student-enheten.


Som du kan se används metoden Property() för att konfigurera skuggegenskaperna. Ange namnet på skuggegenskapen som en sträng och typen som en generisk parameter. Om namnet som anges i Property()-metoden matchar namnet på en befintlig egenskap, kommer EF Core att konfigurera den befintliga egenskapen som en skuggegenskap istället för att introducera en ny skuggegenskap.

Skuggegenskaper i databasen

När skuggegenskaperna är definierade behöver vi uppdatera databasschemat eftersom skuggegenskaperna kommer att mappas till motsvarande databaskolumner.

För att göra detta, lägg till en databasmigrering i Visual Studios Package Manager-konsol med följande kommando.


Studenttabellen kommer nu att innehålla två kolumner, CreatedDate och UpdatedDate i SQL Server, som visas nedan.



Så även om vi inte inkluderar dessa egenskaper i Student-klassen och konfigurerar dem som skuggegenskaper, kommer databasen att ha motsvarande kolumner.

Åtkomst till skuggegendomen

Du kan använda Property()-metoden för att hämta eller ställa in värdet på shadow-egenskapen i EntityEntry. Följande kod får tillgång till värdet av skuggegenskapen.

Men i vårt scenario vill vi automatiskt sätta värdena till dessa skuggegenskaper i SaveChanges()-metoden så att vi inte behöver ställa in dem manuellt på varje entitetsobjekt. Så, åsidosätt metoden SaveChanges() i kontextklassen som visas nedan.

Detta kommer automatiskt att sätta värden för skuggegenskaperna CreatedDate och UpdatedDate.

Exekverar nu följande kod och kontrollerar posterna i databasen.


Ovanstående kod infogar följande poster i CreatedDate och UpdatedDate för studenter.



Så genom att konfigurera skuggegenskaperna behöver vi inte inkludera dem i entitetsklassen.

Konfigurera skuggegenskaperna på alla enheter

Istället för att manuellt konfigurera skuggegenskaper på alla entiteter samtidigt, kan du konfigurera dem manuellt.

Till exempel kan vi konfigurera alla enheter i CreatedDate och UpdatedDate förra gången, som visas i bilden nedan.


När ska man använda skuggegenskapen?

Skuggattributet kan användas i två situationer:

När du inte vill exponera databaskolumner på mappade enheter, som i scenariot som diskuterats ovan.
När du inte vill exponera främmande nyckelattribut utan bara använda navigationsattribut för att hantera relationer. Främmande nyckel-egenskapen kommer att vara en skuggegenskap och mappas till databaskolumnen, men kommer inte att exponeras som en egenskap för enheten. (I EF Core, om du inte definierar en främmande nyckel-egenskap i en entitetsklass, kommer den automatiskt att generera en skuggegenskap för detta.) Du behöver inte konfigurera främmande nyckel-egenskaper manuellt. )


Resurser:

Inloggningen med hyperlänken är synlig.
Inloggningen med hyperlänken är synlig.




Föregående:MySQL exporterar frågeresultaten till en fil
Nästa:ASP.NET Core ViewComponent Tutorial om användning av ViewComponent
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com