Entity Framework - Datenmodell
Das Entity Data Model (EDM) ist eine erweiterte Version des Entity-Relationship-Modells, das das konzeptionelle Modell der Daten mithilfe verschiedener Modellierungstechniken spezifiziert. Es bezieht sich auch auf eine Reihe von Konzepten, die die Datenstruktur unabhängig von ihrer gespeicherten Form beschreiben.
EDM unterstützt eine Reihe primitiver Datentypen, die Eigenschaften in einem konzeptionellen Modell definieren. Wir müssen drei Kernteile betrachten, die die Grundlage für das Entity Framework bilden und zusammen als Entity Data Model bezeichnet werden. Im Folgenden sind die drei Kernteile von EDM aufgeführt.
- Das Speicherschemamodell
- Das konzeptionelle Modell
- Das Mapping-Modell
Das Speicherschemamodell
Das Speichermodell, das auch als SSDL (Storage Schema Definition Layer) bezeichnet wird, repräsentiert die schematische Darstellung des Backend-Datenspeichers.
Das konzeptionelle Modell
Das konzeptionelle Modell, auch als CSDL (Conceptual Schema Definition Layer) bezeichnet, ist das reale Entitätsmodell, gegen das wir unsere Abfragen schreiben.
Das Mapping-Modell
Die Zuordnungsebene ist nur eine Zuordnung zwischen dem Konzeptmodell und dem Speichermodell.
Das logische Schema und seine Zuordnung zum physischen Schema wird als EDM dargestellt.
Visual Studio bietet auch Entity Designer für die visuelle Erstellung des EDM und der Zuordnungsspezifikation.
Die Ausgabe des Tools ist die XML-Datei (* .edmx), die das Schema und die Zuordnung angibt.
Die Edmx-Datei enthält Entity Framework-Metadatenartefakte.
Schema-Definitionssprache
ADO.NET Entity Framework verwendet eine XML-basierte Datendefinitionssprache namens Schema Definition Language (SDL), um das EDM-Schema zu definieren.
Die SDL definiert die einfachen Typen, die anderen primitiven Typen ähnlich sind, einschließlich String, Int32, Double, Decimal und DateTime.
Eine Aufzählung, die eine Karte primitiver Werte und Namen definiert, wird ebenfalls als einfacher Typ betrachtet.
Aufzählungen werden nur ab Framework Version 5.0 unterstützt.
Komplexe Typen werden aus einer Aggregation anderer Typen erstellt. Eine Sammlung von Eigenschaften dieser Typen definiert einen Entitätstyp.
Das Datenmodell verfügt hauptsächlich über drei Schlüsselkonzepte zur Beschreibung der Datenstruktur:
- Entitätstyp
- Assoziationstyp
- Property
Entitätstyp
Der Entitätstyp ist der grundlegende Baustein zur Beschreibung der Datenstruktur in EDM.
In einem konzeptionellen Modell werden Entitätstypen aus Eigenschaften erstellt und beschreiben die Struktur von Konzepten der obersten Ebene, z. B. Studenten und Einschreibungen in einer Geschäftsanwendung.
Eine Entität repräsentiert ein bestimmtes Objekt, z. B. einen bestimmten Schüler oder eine bestimmte Einschreibung.
Jede Entität muss einen eindeutigen Entitätsschlüssel innerhalb eines Entitätssatzes haben. Ein Entitätssatz ist eine Sammlung von Instanzen eines bestimmten Entitätstyps. Entitätssätze (und Zuordnungssätze) werden logisch in einem Entitätscontainer gruppiert.
Vererbung wird mit Entitätstypen unterstützt, dh ein Entitätstyp kann von einem anderen abgeleitet werden.
Assoziationstyp
Es ist ein weiterer grundlegender Baustein zur Beschreibung von Beziehungen im EDM. In einem konzeptionellen Modell repräsentiert eine Zuordnung eine Beziehung zwischen zwei Entitätstypen wie Student und Einschreibung.
Jede Assoziation hat zwei Assoziationsenden, die die an der Assoziation beteiligten Entitätstypen angeben.
Jedes Assoziationsende gibt auch eine Assoziationsendmultiplizität an, die die Anzahl der Entitäten angibt, die sich an diesem Ende der Assoziation befinden können.
Eine Assoziationsendmultiplizität kann einen Wert von eins (1), null oder eins (0..1) oder viele (*) haben.
Auf Entitäten an einem Ende einer Zuordnung kann über Navigationseigenschaften oder über Fremdschlüssel zugegriffen werden, wenn sie für einen Entitätstyp verfügbar gemacht werden.
Eigentum
Entitätstypen enthalten Eigenschaften, die ihre Struktur und Eigenschaften definieren. Beispielsweise kann ein Student-Entitätstyp Eigenschaften wie Student-ID, Name usw. haben.
Eine Eigenschaft kann primitive Daten (z. B. eine Zeichenfolge, eine Ganzzahl oder einen Booleschen Wert) oder strukturierte Daten (z. B. einen komplexen Typ) enthalten.