Grundlegendes zu EF Core

Abgeschlossen

Entity Framework Core (EF Core) ist ein objektrelationaler Mapper (ORM). Ein ORM stellt eine Ebene zwischen dem Domänenmodell, das Sie im Code implementieren, und einer Datenbank bereit. EF Core ist eine Datenzugriffs-API, mit der Sie mit der Datenbank interagieren können, indem Sie einfache alte CLR-Objekte (Plain Old CLR Objects, POCOs) und die stark typisierte LINQ-Syntax (Language Integrated Query) verwenden.

In EF Core wird die Datenbank hinter .NET-POCOs abstrahiert. EF Core übernimmt die direkte Interaktion mit der zugrunde liegenden Datenbank. Wenn Sie diese API verwenden, müssen Sie weniger Zeit dafür aufwenden, Anforderungen in und aus der Datenbank zu übersetzen und SQL-Abfragen zu schreiben, sodass Sie sich mehr auf wichtige Geschäftslogik konzentrieren können.

EF Core bietet folgende Möglichkeiten:

  • Laden von Daten als C#-Objekte (Entitäten).
  • Hinzufügen, Ändern und Löschen von Daten durch Aufrufen von Methoden für die Entitäten
  • Zuordnen mehrerer Datenbanktabellen zu einer einzelnen C#-Entität
  • Behandeln von Parallelitätsproblemen, die auftreten, wenn mehrere Benutzer gleichzeitig denselben Datensatz aktualisieren möchten
  • Verwenden der stark typisierten LINQ-Syntax (System.Linq) zum Abfragen der Datenbank
  • Zugreifen auf mehrere Datenbanken (einschließlich SQL Server, SQLite, Azure Cosmos DB, PostgreSQL und MySQL)
  • Erstellen Ihres Domänenmodells aus einer vorhandenen Datenbank
  • Verwalten Ihres Datenbankschemas basierend auf Ihrem Domänenmodell
  • Committen von Änderungen an komplexe, tiefe oder breite Objektgraphen verwandter Entitäten mit einem einzigen Methodenaufruf

Überprüfen der EF Core-Architektur

Die folgende Abbildung zeigt die Architektur von EF Core:

Abbildung mit Komponenten und Prozessen in der Entity Framework Core-Architektur

DbContext ist eine spezielle Klasse, die eine Arbeitseinheit darstellt. DbContext bietet Methoden zum Konfigurieren von Optionen, Verbindungszeichenfolgen, der Protokollierung und des Modells, das verwendet wird, um der Datenbank Ihre Domäne zuzuordnen.

Klassen, die von DbContext abgeleitet sind:

  • Stellt eine aktive Sitzung mit der Datenbank dar.
  • Speichern Instanzen von Entitäten und fragen diese ab.
  • Diese Klassen enthalten Eigenschaften vom Typ DbSet<T>, die Tabellen in der Datenbank darstellen.

Der EF Core-Anbieter übersetzt Objektdiagrammänderungen in SQL.

Datenbankanbieter:

  • Dies ist eine Plug-In-Bibliothek, die für eine bestimmte Datenbank-Engine (z. B. SQL Server, Azure Cosmos DB oder PostgreSQL) entwickelt wurde.
  • Übersetzt Methodenaufrufe und LINQ-Abfragen in den nativen SQL-Dialekt der Datenbank.
  • Erweitert EF Core um Funktionen, die einzigartig für die Datenbankengine sind.

Verwalten von Datenbankschemas

EF Core bietet zwei wesentliche Möglichkeiten, wie Sie Ihr EF Core-Modell und Ihr Datenbankschema synchronisieren können:

  • Migrationen (Modell als Source of Truth)
  • Reverse Engineering (Datenbank als Source of Truth)

Um zwischen diesen Optionen zu wählen, legen Sie fest, ob Ihr EF Core-Modell oder das Datenbankschema als Source of Truth fungiert.

Migrationen

In realen Projekten ändern sich Datenmodelle durch die Implementierung von App-Features. Wenn neue Entitäten hinzugefügt und entfernt werden, müssen die Datenbankschemas entsprechend geändert werden. Das EF Core-Migrationsfeature bietet eine Möglichkeit, das Datenbankschema inkrementell zu aktualisieren, um es mit dem Datenmodell der Anwendung zu synchronisieren und zugleich die vorhandenen Daten in der Datenbank beizubehalten.

Wenn eine Datenmodelländerung eingeführt wird, verwendet der Entwickler EF Core-Tools, um eine entsprechende Migration hinzuzufügen. EF Core vergleicht das aktuelle Modell mit einer Momentaufnahme des vorherigen Modells, um die Unterschiede zu ermitteln. C#-Code zum Implementieren der Änderungen wird generiert. Die C#-Dateien können für benutzerdefinierte Verhaltensweisen oder das Seeding von Daten geändert werden. Die Dateien werden wie jede andere Quelldatei in der Quellcodeverwaltung Ihres Projekts nachverfolgt.

Nachdem eine neue Migration generiert wurde, kann sie auf verschiedene Weise auf eine Datenbank angewendet werden. EF Core zeichnet alle angewendeten Migrationen in einer speziellen Verlaufstabelle auf. Die Verlaufstabelle zeichnet auf, welche Migrationen angewendet wurden.

Reverse Engineering

Reverse Engineering ist der Prozess des Gerüstbaus von Entitätsmodellklassen und einer DbContext-Klasse, die auf einem Datenbankschema basiert. Dieser Ansatz wird häufig bei vorhandenen oder freigegebenen Datenbanken verwendet, die von Datenbankadministrator*innen verwaltet werden.

In der nächsten Lerneinheit erfahren Sie, wie Sie EF Core für die ersten Schritte einer Migration verwenden.

Überprüfen Sie Ihr Wissen

1.

Welche Klasse stellt eine Reihe von grundlegenden Vorgängen zum Konfigurieren von und Interagieren mit Ihrer Datenbank bereit?