Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 36284|Odpowiedź: 0

[Źródło] Atrybuty cieni ramek ramek EF Core Series (3) [wznowienie]

[Skopiuj link]
Opublikowano 7 lutego 2021 o 14:15:08 | | | |
EF Core Series 2 kapsuluje OnModelCreating, tworzy indeksy za pomocą odbić i inne elementy
https://www.itsvse.com/thread-9392-1-1.html

Właściwości cieniowe to właściwości, które nie są zdefiniowane w klasie encji .NET, ale są zdefiniowane dla tego typu jednostki w modelu EF Core. Wartości i stany tych atrybutów są utrzymywane wyłącznie w trackerze zmian. Właściwości cieniowane są przydatne, gdy dane w bazie danych nie powinny być widoczne na mapowanym typie encji.
Rdzeń Entity Framework wprowadza nowy typ atrybutu zwany atrybutem "shadow", który nie istnieje w EF 6.x.

Atrybut cienia tam nie ma. .NET klasy ency. Zamiast tego możesz skonfigurować go dla konkretnego typu jednostki w modelu danych danych. Można ją skonfigurować w metodzie OnModelCreating() klasy kontekstowej.

Poniższy diagram ilustruje atrybut cienia.



Jak pokazano na powyższym obrazku, atrybut cienia nie należy do twojej klasy encji. Dlatego nie możesz uzyskać do niego dostępu podczas uzyskiwania innych właściwości podmiotu. Właściwości cieniowane można konfigurować tylko dla typów jednostek podczas budowy modelu danych encji, a także będą mapowane na kolumny bazy danych. Wartość i stan właściwości cienia są utrzymywane wyłącznie w trackerze zmian.

Przyjrzyjmy się praktycznym aspektom właściwości cieni. Załóżmy, że musimy utrzymywać daty utworzenia i aktualizacji każdego rekordu w tabeli bazy danych. Nauczyłeś się ustawiać daty tworzenia i modyfikacji encji w EF Core, definiując właściwości CreatedDate i UpdatedDate w klasie encji. Tutaj zobaczymy, jak osiągnąć ten sam efekt, używając właściwości cieni zamiast włączania właściwości cienia do klasy encji.

Rozważmy następujące klasy jednostek studenckich.

Klasa uczniów powyżejAtrybuty CreatedDate i UpdatedDate nie są uwzględnioneaby zachować czas utworzenia lub aktualizacji. Konfigurujemy je jako właściwości cienia na encji Student.

Zdefiniuj właściwości cieni

Możesz użyć metody OnModelCreating() do definiowania właściwości cieni dla typów encji za pomocą Fluent API.

Poniższa konfiguracja konfiguruje dwie właściwości cieniowane, CreatedDate i UpdatedDate, dla jednostki Student.


Jak widać, metoda Property() służy do konfiguracji właściwości cieni. Określ nazwę właściwości cienia jako ciąg znaków, a typ jako parametr ogólny. Jeśli nazwa podana w metodzie Property() odpowiada nazwie istniejącej właściwości, EF Core skonfiguruje tę własność jako własność cienia zamiast wprowadzać nową własność cienia.

Właściwości cieniowe w bazie danych

Gdy właściwości cieni zostaną zdefiniowane, musimy zaktualizować schemat bazy danych, ponieważ właściwości cienia zostaną przypisane do odpowiadających kolumn bazy danych.

Aby to zrobić, dodaj migrację bazy danych w konsoli Menedżera Pakietów Visual Studio za pomocą następującego polecenia.


Tabela Student będzie teraz zawierać dwie kolumny: CreatedDate i UpdatedDate w SQL Server, jak pokazano poniżej.



Więc nawet jeśli nie uwzględnimy tych właściwości w klasie Student i nie skonfigurujemy ich jako właściwości cieniowe, baza danych będzie miała odpowiadające im kolumny.

Uzyskaj dostęp do własności cienia

Możesz użyć metody Property(), aby uzyskać lub ustawić wartość właściwości cienia w EntityEntry. Poniższy kod uzyskuje dostęp do wartości właściwości cieni.

Jednak w naszym scenariuszu chcemy automatycznie ustawić wartości tych właściwości cienia w metodzie SaveChanges(), aby nie musieć ich ręcznie ustawiać na każdym obiekcie entity. Dlatego nadpisz metodę SaveChanges() w klasie kontekstowej, jak pokazano poniżej.

Automatycznie ustawi to wartości dla właściwości cienia CreatedDate i UpdatedDate.

Teraz wykonaj następujący kod i sprawdź rekordy w bazie danych.


Powyższy kod wprowadzi następujące rekordy w CreatedDate i UpdatedDate dla uczniów.



Konfigurując właściwości cieni, nie musimy ich uwzględniać w klasie encji.

Konfiguruj właściwości cieni na wszystkich jednostkach

Zamiast ręcznie konfigurować właściwości cieni na wszystkich jednostkach jednocześnie, możesz je skonfigurować ręcznie.

Na przykład możemy skonfigurować wszystkie jednostki CreatedDate i UpdatedDate ostatnim razem, jak pokazano na poniższym obrazku.


Kiedy używać właściwości cienia?

Atrybut cienia można użyć w dwóch sytuacjach:

Kiedy nie chcesz wystawiać kolumn bazy danych na zmapowanych encjach, jak w opisanym powyżej scenariuszu.
Kiedy nie chcesz ujawniać atrybutów kluczy obcych, a jedynie chcesz używać atrybutów nawigacyjnych do zarządzania relacjami. Właściwość klucza obcego będzie właściwością cienia i zostanie przypisana do kolumny bazy danych, ale nie zostanie ujawniona jako własność tej jednostki. (W EF Core, jeśli nie zdefiniujesz właściwości klucza obcego w klasie encji, automatycznie wygeneruje ona właściwość cienia dla tej klasy.) Nie musisz ręcznie konfigurować właściwości klucza obcego. )


Zasoby:

Logowanie do linku jest widoczne.
Logowanie do linku jest widoczne.




Poprzedni:MySQL eksportuje wyniki zapytań do pliku
Następny:ASP.NET Podstawowy samouczek ViewComponent dotyczący korzystania z ViewComponent
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com