Anpassungen des Mappings bei Entity Framework Core
17.11.2016, 00:00 Uhr
Abbildungsoptionen
Beim Erzeugen von Datenbankschemata braucht Entity Framework Core manchmal etwas Nachhilfe.
Bereits das Beispiel in der letzten Ausgabe dieser Kolumne hat gezeigt, dass Konventionen nicht immer ausreichen, um mit Entity Framework (EF) Core ein gültiges Datenbankschema aus einem Objektmodell zu erzeugen [1]. Nachhilfe durch den Softwareentwickler war in dem Fall notwendig bei zusammengesetzten Primärschlüsseln, Primärschlüsseln für erbende Klassen sowie dem Deaktivieren des kaskadierenden Löschens, weil es sonst zu zirkulären Löschoperationen kommt. Dieser Beitrag zeigt nun noch einmal systematisch alle Möglichkeiten, wie der Entwickler mit Datenannotationen in den Entitätsklassen oder dem Fluent-API in der Methode OnModelCreating() in der Kontextklasse EF Core mitteilen kann, wie das Datenbankschema zu erzeugen ist. Man bezeichnet diese Möglichkeiten als Konfiguration des Datenbankschemas. Es gelten dabei drei Grundregeln:
- Die Konfiguration per Datenannotationen oder Fluent-API wiegt schwerer als Konventionen. Das heißt, eine Konfiguration setzt im Einzelfall Konventionen außer Kraft. Microsoft spricht bei EF Core zwar von „Konvention vor Konfiguration“, damit ist jedoch gemeint, dass durch Konventionen die explizite Konfiguration überflüssig werden soll, so weit es geht.
- Bei sich widersprechenden Datenannotationen und Fluent-API-Aufrufen wiegt der Fluent-API-Aufruf schwerer.
- Alle Konfigurationen lassen sich per Fluent-API ausdrücken. Ein Teil davon ist auch per Datenannotation möglich.
Jetzt 1 Monat kostenlos testen!
Sie wollen zukünftig auch von den Vorteilen eines plus-Abos profitieren? Werden Sie jetzt dotnetpro-plus-Kunde.
- + Digitales Kundenkonto,
- + Zugriff auf das digitale Heft,
- + Zugang zum digitalen Heftarchiv,
- + Auf Wunsch: Weekly Newsletter,
- + Sämtliche Codebeispiele im digitalen Heftarchiv verfügbar