Sobes.tech
Middle

Welche Ansätze gibt es im EF Core-Ökosystem?

sobes.tech KI

Antwort von AI

Im Ökosystem von Entity Framework Core gibt es drei Hauptansätze, um mit dem Datenbankschema zu arbeiten:

  1. Database First: Die Datenbank existiert bereits, und EF Core generiert Modellklassen (Entities) und DbContext basierend auf diesem Schema.

    • Vorteile: Schneller Einstieg bei bestehender Datenbank, das Schema wird vollständig von der Datenbank kontrolliert.
    • Nachteile: Änderungen an der Datenbank erfordern eine erneute Codegenerierung, was benutzerdefinierten Code überschreiben kann.
    // Beispielbefehl zur Generierung aus einer bestehenden Datenbank
    // Scaffold-DbContext "Server=(localdb)\\mssqllocaldb;Database=MyDatabase;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
    
  2. Code First: Sie definieren Modelle (Entities) und DbContext im C#-Code. EF Core erstellt oder aktualisiert das Datenbankschema basierend auf diesen Definitionen mittels Migrationen.

    • Vorteile: Volle Kontrolle über den Modelcode, Integration in die Anwendungsquellcodebasis, Verwendung von Migrationen zur Schemaverwaltung.
    • Nachteile: Erfordert Migrationen, Änderungen am Schema beginnen immer mit Änderungen im Code.
    // Beispiel einer Modelklasse im Code-First-Ansatz
    public class Product
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public decimal Price { get; set; }
    }
    
  3. Model First: Obwohl historisch in älteren EF-Versionen (vor Core) vorhanden, ist Model First in EF Core kein nativer und eigenständiger Ansatz im gleichen Sinne wie Database First oder Code First. Im Wesentlichen reduziert sich Model First in EF Core auf das Schreiben von Modellen im Code (wie bei Code First) und das Generieren der Datenbank daraus. Es gibt keinen separaten visuellen Modell-Designer wie in EF 6. Daher wird es in EF Core oft als Variante von Code First betrachtet, bei der Sie das Modell manuell beschreiben, ohne eine bestehende Datenbank zu verwenden.

Hauptmerkmale der Ansätze:

Ansatz Arbeitsbeginn Verwaltung des Datenbankschemas Werkzeuge für Änderungen
Database First Bestehende Datenbank Manuell in der Datenbank Scaffold-DbContext
Code First Modellklassen und DbContext in C# EF Core Migrationen Add-Migration, Update-Database
Model First (im EF Core-Kontext) Modellklassen und DbContext in C# (ohne bestehende Datenbank) EF Core Migrationen oder Generierung beim Start Add-Migration, Update-Database

Die Wahl des Ansatzes hängt von den Anfangsbedingungen des Projekts und den Präferenzen des Teams ab. Code First ist der am weitesten verbreitete Ansatz in neuen EF Core-Projekten aufgrund seiner Flexibilität und Integration in den Entwicklungsprozess.