Neue Features in Entity Framework Core 5

Neue Features in Entity Framework Core 5

20 Feb 2021 - Matthias Voigt

Mit der Veröffentlichung von Entity Framework Core 5 (EF Core 5) hat Microsoft zahlreiche neue Features und Verbesserungen eingeführt, die die Arbeit mit Datenbanken in .NET-Anwendungen effizienter und leistungsfähiger machen. In diesem Artikel werde ich einige der wichtigsten neuen Features von EF Core 5 vorstellen und erläutern, wie sie in der Praxis angewendet werden können.

Was ist Entity Framework Core?

Entity Framework Core (EF Core) ist ein objekt-relationaler Mapper (ORM), der Entwicklern ermöglicht, mit Datenbanken auf eine abstrakte Weise zu arbeiten, indem er SQL-Abfragen in C#-Code kapselt. EF Core 5 ist die neueste Version und bringt viele Verbesserungen und neue Funktionen mit sich.

Neue Features in EF Core 5

1. TPT (Table Per Type) Vererbung

EF Core 5 führt die Unterstützung für die TPT-Vererbung (Table Per Type) ein, die es ermöglicht, eine Vererbungshierarchie in mehreren Tabellen zu speichern. Dies war eine der am häufigsten nachgefragten Funktionen und bietet mehr Flexibilität bei der Modellierung komplexer Datenstrukturen.

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class Employee : Person
{
    public decimal Salary { get; set; }
}

public class Student : Person
{
    public string School { get; set; }
}

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Person>().ToTable("People");
    modelBuilder.Entity<Employee>().ToTable("Employees");
    modelBuilder.Entity<Student>().ToTable("Students");
}

2. Split Queries für bessere Leistung

Split Queries ermöglichen es, eine Abfrage in mehrere SQL-Abfragen zu unterteilen, um die Leistung bei der Arbeit mit großen Datenmengen zu verbessern. Dies kann insbesondere bei komplexen Joins nützlich sein.

var blogs = context.Blogs
    .Include(blog => blog.Posts)
    .AsSplitQuery()
    .ToList();

3. Filter für navigierbare Eigenschaften

Mit EF Core 5 können Filter für navigierbare Eigenschaften definiert werden, um nur bestimmte Daten aus verknüpften Entitäten zu laden. Dies verbessert die Effizienz und reduziert die Datenmenge, die aus der Datenbank abgerufen wird.

modelBuilder.Entity<Blog>()
    .HasMany(b => b.Posts)
    .WithOne(p => p.Blog)
    .HasFilter(p => p.IsPublished);

4. Konfigurierbare Konventionen

EF Core 5 ermöglicht es, Konventionen zu konfigurieren, die das Verhalten des ORMs steuern. Dies bietet Entwicklern mehr Kontrolle über die automatische Konfiguration von Entitäten.

modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

5. Better Support for Many-to-Many Relationships

EF Core 5 bietet verbesserte Unterstützung für viele-zu-viele-Beziehungen, ohne dass eine Join-Entität explizit definiert werden muss.

public class Student
{
    public int Id { get; set; }
    public string Name { get; set; }
    public ICollection<Course> Courses { get; set; }
}

public class Course
{
    public int Id { get; set; }
    public string Title { get; set; }
    public ICollection<Student> Students { get; set; }
}

6. Temporal Tables

EF Core 5 unterstützt die Verwendung temporaler Tabellen, die es ermöglichen, Änderungen an Datensätzen über die Zeit hinweg nachzuverfolgen.

modelBuilder.Entity<MyEntity>().ToTable("MyEntities", t => t.IsTemporal());

Fazit

Entity Framework Core 5 bringt zahlreiche neue Features und Verbesserungen mit sich, die die Entwicklung von .NET-Anwendungen mit Datenbankanbindung erheblich erleichtern. Von der Unterstützung für TPT-Vererbung über Split Queries bis hin zu verbesserten Many-to-Many-Beziehungen bietet EF Core 5 Entwicklern leistungsstarke Werkzeuge zur Modellierung und Verwaltung von Daten. Es lohnt sich, diese neuen Features in zukünftigen Projekten zu erkunden und zu nutzen.

Für weitere Details und eine ausführliche Anleitung besuche die offizielle Microsoft-Dokumentation.