ORM für C# (.NET): Vergleich von Entity Framework, Dapper und LINQ to SQL

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

ORM für C# (.NET): Vergleich und Beispiele



In der modernen Entwicklung auf der .NET-Plattform kommt die Arbeit mit Datenbanken selten ohne den Einsatz von Object-Relational Mapping (ORM) aus. ORM-Bibliotheken ermöglichen es Entwicklern, mit relationalen Datenbanken über objektorientierten Code zu interagieren und ersparen die Notwendigkeit, komplexe SQL-Abfragen manuell zu schreiben. In diesem Artikel vergleichen wir die drei beliebtesten ORMs für C#: Entity Framework Core, Dapper und LINQ to SQL und geben praktische Anwendungsbeispiele.



1. Entity Framework Core (EF Core)



EF Core ist ein modernes, plattformübergreifendes ORM von Microsoft, das die Weiterentwicklung von Entity Framework 6 darstellt. Es unterstützt die Arbeit mit verschiedenen DBMS (SQL Server, PostgreSQL, SQLite, MySQL u.a.) und bietet leistungsstarke Funktionen für die Datenarbeit.



Hauptmerkmale:

  • Code First / Database First – Sie können die Datenbank basierend auf Code erstellen oder umgekehrt.
  • LINQ-Abfragen – Abfragen werden in C# geschrieben, und EF Core wandelt sie in SQL um.
  • Migrationen – Automatische Verwaltung des Datenbankschemas.
  • Lazy Loading – Automatisches Laden von verknüpften Daten.


Codebeispiel (Code First):



using Microsoft.EntityFrameworkCore;using System.Collections.Generic;

public class User{ public int Id { get; set; } public string Name { get; set; } public string Email { get; set; }}

public class AppDbContext : DbContext{ public DbSet<User> Users { get; set; }

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer("Server=.;Database=MyDb;Trusted_Connection=True;"); }}

// Verwendungusing (var db = new AppDbContext()){ // Benutzer hinzufügen var user = new User { Name = "Ivan", Email = "ivan@example.com" }; db.Users.Add(user); db.SaveChanges();

// Abfrage mit LINQ var users = db.Users.Where(u => u.Name.Contains("Ivan")).ToList();}


Vorteile: Hohe Leistung, umfangreiche Funktionalität, Unterstützung von Migrationen, aktive Community. Nachteile: Höherer Speicherverbrauch, Komplexität bei der Konfiguration komplexer Abfragen.



2. Dapper



Dapper ist ein leichtgewichtiges Micro-ORM, das vom Stack Overflow-Team entwickelt wurde. Es bietet kein vollständiges Mapping, ermöglicht aber die direkte Ausführung von SQL-Abfragen und das automatische Mapping der Ergebnisse in C#-Objekte.



Hauptmerkmale:

  • Maximale Leistung – Dapper gilt als eines der schnellsten ORMs für .NET.
  • Direktes SQL – Sie schreiben Abfragen in reinem SQL.
  • Minimalismus – Keine Migrationen, Kontexte oder komplexe Konfigurationen.


Codebeispiel:



using Dapper;using System.Data.SqlClient;using System.Linq;

public class User{ public int Id { get; set; } public string Name { get; set; } public string Email { get; set; }}

// Verwendungstring connectionString = "Server=.;Database=MyDb;Trusted_Connection=True;";using (var connection = new SqlConnection(connectionString)){ // SQL-Abfrage ausführen var users = connection.Query<User>("SELECT * FROM Users WHERE Name = @Name", new { Name = "Ivan" }).ToList();

// Gespeicherte Prozedur ausführen var result = connection.Query<User>("GetUsers", commandType: System.Data.CommandType.StoredProcedure);}


Vorteile: Hohe Geschwindigkeit, Einfachheit, minimaler Ressourcenverbrauch. Nachteile: Keine Migrationen, SQL muss manuell geschrieben werden, kein automatisches Laden verknüpfter Entitäten.



3. LINQ to SQL



Empfehlungen