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.
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.
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");
}
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();
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);
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>();
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; }
}
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());
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.