Erstellen eines Modells

Ein EF-Modell speichert die Details zur Zuordnung von Anwendungsklassen und -eigenschaften zu Datenbanktabellen und-spalten. Es gibt zwei Hauptmöglichkeiten, ein EF-Modell zu erstellen:

  • Verwenden von Code First: Der Entwickler schreibt Code, um ein Modell zu entwerfen. EF generiert die Modelle und Zuordnungen zur Laufzeit basierend auf Entitätsklassen und zusätzlichen Modellkonfigurationen, die vom Entwickler bereitgestellt werden.

  • Verwenden des EF-Designers: Der Entwickler zeichnet Felder und Linien, um das Modell mit dem EF-Designer zu entwerfen. Das daraus entstehende Modell wird als XML in einer Datei mit der Erweiterung EDMX gespeichert. Die Domänenobjekte der Anwendung werden normalerweise automatisch über das konzeptionelle Modell erzeugt.

EF-Workflows

Beide Ansätze können für die Ausrichtung auf eine vorhandene Datenbank oder die Erstellung einer neuen Datenbank verwendet werden, sodass es vier verschiedene Workflows gibt. Entscheiden Sie sich für das Modell, das für Sie am geeignetsten ist:

Ich möchte Code schreiben... Ich möchte einen Designer verwenden...
Ich erstelle eine neue Datenbank Verwenden Sie Code First, um Ihr Modell mit Code zu definieren und dann eine Datenbank zu erstellen. Verwenden Sie Model First, um Ihr Modell mit Feldern und Linien zu definieren und dann eine Datenbank zu erstellen.
Ich muss auch eine vorhandene Daten zugreifen Verwenden Sie Code First, um ein codebasiertes Modell zu erstellen, das eine Zuordnung zu einer bereits vorhandenen Datenbank herstellt. Verwenden Sie Database First, um Felder und Linien zu erstellen, die eine Zuordnung zu einer bereits vorhandenen Datenbank herstellen.

Sehen Sie sich ein Video an: Welcher EF-Workflow eignet sich am besten für mich?

In diesem kurzen Video werden die Unterschiede beschrieben, und Sie erfahren, wie Sie sich für den passenden Workflow entscheiden.

Präsentation:Rowan Miller

Miniaturansicht für WorkflowWMV | MP4 | WMV (ZIP)

Wenn Sie sich das Video angesehen haben und sich dennoch nicht entscheiden können, ob Sie den EF-Designer oder Code First verwenden möchten, können Sie auch einfach beides lernen.

Einblick in die Hintergründe

Egal, ob Sie Code First oder den EF-Designer verwenden, besteht ein EF-Modell immer aus mehreren Komponenten:

  • Die Domänenobjekte der Anwendung oder die Entitätstypen der Anwendung. Dies wird häufig als Objektebene bezeichnet.

  • Ein konzeptionelles Modell besteht aus domänenspezifischen Entitätstypen und -beziehungen, die mit Entity Data Model beschrieben werden. Diese Ebene wird häufig als Ebene C (Englisch: Conceptual) bezeichnet.

  • Ein Speichermodell, das Tabellen, Spalten und Beziehungen darstellt, wie in der Datenbank definiert. Diese Ebene wird häufig als Ebene S (Englisch: Storage) bezeichnet.

  • Eine Zuordnung zwischen dem konzeptionellen Modell und dem Datenbankschema. Diese Zuordnung wird häufig als C-S-Zuordnung bezeichnet.

Die EF-Zuordnungs-Engine nutzt die C-S-Zuordnung zum Transformieren von Vorgängen mit Entitäten (z.B. das Erstellen, Lesen, Aktualisieren und Löschen) in entsprechende Vorgänge mit Tabellen in Datenbanken.

Die Zuordnung zwischen dem konzeptionellen Modell und den Objekten der Anwendung wird häufig als O-C-Zuordnung bezeichnet. Im Gegensatz zur C-S-Zuordnung erfolgt die O-C-Zuordnung implizit und 1:1. Entitäten, Eigenschaften und Beziehungen, die im konzeptionellen Modell definiert wurden, müssen mit den Formen und Typen der .NET-Objekte übereinstimmen. Ab EF 4 kann die Objektebene aus einfachen Objekten mit Eigenschaften bestehen, ohne dass Abhängigkeiten von EF vorhanden sind. Diese werden oft als POCOs (Plain Old CLR Objects) bezeichnet, und die Zuordnung von Typen und Eigenschaften erfolgt basierend auf Konventionen bezüglich der Übereinstimmung von Namen. In EF 3.5 gab es spezifische Einschränkungen der Objektebene: Entitäten mussten von der Klasse EntityObject abgeleitet werden und EF-Attribute aufweisen, damit die O-C-Zuordnung implementiert werden konnte.