Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 36284|Antwort: 0

[Quelle] EF Core Series (3) Entity Frame Schattenattribute [Nachdruck]

[Link kopieren]
Veröffentlicht am 07.02.2021, 14:15:08 | | | |
EF Core Series 2 kapselt OnModelCreating, erstellt Indizes mit Reflexionen und mehr
https://www.itsvse.com/thread-9392-1-1.html

Schatteneigenschaften sind Eigenschaften, die in der .NET-Entitätsklasse nicht definiert sind, aber für diesen Entitätstyp im EF Core-Modell definiert sind. Die Werte und Zustände dieser Attribute werden ausschließlich im Change Tracker gespeichert. Schattierte Eigenschaften sind nützlich, wenn Daten in einer Datenbank nicht auf dem abgebildeten Entitätstyp verfügbar sein sollten.
Der Entity Framework-Kern führt einen neuen Attributtyp namens "Shadow"-Attribut ein, der in EF 6.x nicht existiert.

Das Schattenattribut ist nicht vorhanden. .NET-Entitätsklassen. Stattdessen können Sie es für einen bestimmten Entitätstyp im Entitätsdatenmodell konfigurieren. Sie kann in der OnModelCreating()-Methode der Kontextklasse konfiguriert werden.

Das folgende Diagramm veranschaulicht das Schattenattribut.



Wie auf dem obigen Bild gezeigt, gehört das Schattenattribut nicht zu deiner Entitätsklasse. Daher können Sie nicht darauf zugreifen, wenn Sie auf andere Eigenschaften einer Entität zugreifen. Schattierte Eigenschaften können nur für Entitätstypen konfiguriert werden, wenn das Entitätsdatenmodell erstellt wird, und sie werden auch auf Datenbankspalten abgebildet. Der Wert und Zustand der Schatteneigenschaft werden nur im Change Tracker gespeichert.

Lassen Sie uns die praktischen Aspekte von Schatteneigenschaften verstehen. Angenommen, wir müssen die Erstellungs- und Aktualisierungsdaten jedes Datensatzes in der Datenbanktabelle pflegen. Sie haben gelernt, wie Sie die Erstellungs- und Änderungsdaten für Entitäten in EF Core festlegen, indem Sie die Eigenschaften CreatedDate und UpdatedDate in der Entitätsklasse definieren. Hier sehen wir, wie man dasselbe Ergebnis erzielt, indem man Schatteneigenschaften verwendet, anstatt Schatteneigenschaften in die Entitätsklasse einzubeziehen.

Betrachten Sie die folgenden Studenten-Entitätsklassen.

Die Studentenklasse obenDie Attribute CreatedDate und UpdatedDate sind nicht enthaltenum die Zeit zu behalten, wann es erstellt oder aktualisiert wurde. Wir konfigurieren sie als Schatteneigenschaften auf der Studenten-Entität.

Definition von Schatteneigenschaften

Sie können die OnModelCreating()-Methode verwenden, um Schatteneigenschaften für Entitätstypen mit der Fluent API zu definieren.

Die folgende Konfiguration konfiguriert zwei schattierte Eigenschaften, CreatedDate und UpdatedDate, für die Student-Entität.


Wie du siehst, wird die Property()-Methode verwendet, um die Schatteneigenschaften zu konfigurieren. Geben Sie den Namen der Schatten-Eigenschaft als Zeichenkette und den Typ als generischen Parameter an. Wenn der in der Property()-Methode angegebene Name mit dem Namen einer bestehenden Eigenschaft übereinstimmt, konfiguriert EF Core diese bestehende Eigenschaft als Schatteneigenschaft, anstatt eine neue Schatteneigenschaft einzuführen.

Schatteneigenschaften in der Datenbank

Sobald die Schatteneigenschaften definiert sind, müssen wir das Datenbankschema aktualisieren, da die Schatteneigenschaften auf die entsprechenden Datenbankspalten abgebildet werden.

Dazu fügen Sie eine Datenbankmigration in der Package Manager-Konsole von Visual Studio mit folgendem Befehl hinzu.


Die Student-Tabelle enthält nun zwei Spalten, CreatedDate und UpdatedDate in SQL Server, wie unten gezeigt.



Selbst wenn wir diese Eigenschaften also nicht in die Student-Klasse aufnehmen und als Schatteneigenschaften konfigurieren, hat die Datenbank die entsprechenden Spalten.

Zugriff auf das Schatten-Gelände

Sie können die Property()-Methode verwenden, um den Wert der Shadow-Eigenschaft in EntityEnter zu erhalten oder einzustellen. Der folgende Code greift auf den Wert der Schatteneigenschaft zu.

In unserem Szenario möchten wir die Werte jedoch automatisch auf diese Schatteneigenschaften in der SaveChanges()-Methode setzen, damit wir sie nicht manuell auf jedem Entitätsobjekt festlegen müssen. Überschreiben Sie also die SaveChanges()-Methode in der Kontextklasse, wie unten gezeigt.

Dies setzt automatisch Werte für die Schatteneigenschaften CreatedDate und UpdatedDate.

Führen Sie nun den folgenden Code aus und überprüfen Sie die Datensätze in der Datenbank.


Der obige Code fügt die folgenden Datensätze in CreatedDate und UpdatedDate für Studierende ein.



Durch die Konfiguration der Schatteneigenschaften müssen wir sie also nicht in die Entitätsklasse aufnehmen.

Konfigurieren Sie die Schatteneigenschaften aller Entitäten

Anstatt Schatteneigenschaften auf allen Objekten gleichzeitig manuell zu konfigurieren, kannst du sie manuell konfigurieren.

Zum Beispiel können wir alle Entitäten von CreatedDate und UpdatedDate beim letzten Mal konfigurieren, wie im folgenden Bild gezeigt.


Wann sollte man die Schatten-Eigenschaft nutzen?

Das Schattenattribut kann in zwei Situationen verwendet werden:

Wenn Sie keine Datenbankspalten auf abgebildeten Entitäten offenlegen möchten, wie im oben beschriebenen Szenario.
Wenn du keine Fremdschlüsselattribute offenlegen willst, sondern nur Navigationsattribute zur Verwaltung von Beziehungen verwenden möchtest. Die Fremdschlüssel-Eigenschaft ist eine Schatten-Eigenschaft und wird auf die Datenbankspalte abgebildet, aber nicht als Eigenschaft der Entität offengelegt. (In EF Core generiert automatisch eine Schatteneigenschaft dafür, wenn man in einer Entitätsklasse keine Fremdschlüssel-Eigenschaft definiert.) Du musst die Eigenschaften der Fremdschlüssel nicht manuell konfigurieren. )


Betriebsmittel:

Der Hyperlink-Login ist sichtbar.
Der Hyperlink-Login ist sichtbar.




Vorhergehend:MySQL exportiert die Abfrageergebnisse in eine Datei
Nächster:ASP.NET Core ViewComponent Tutorial zur Nutzung von ViewComponent
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com