Einführung in Dapper: Was ist das und warum braucht man es?
Dapper ist eine schlanke Bibliothek (Micro ORM) für die .NET-Plattform, entwickelt vom Team von Stack Overflow. Es handelt sich um eine Erweiterung für IDbConnection, die SQL-Abfragen an Datenbanken mit minimalem Overhead ausführt. Im Gegensatz zu schweren ORMs (wie Entity Framework Core) verfolgt Dapper keine Objektänderungen, generiert keine komplexen SQL-Abfragen und erfordert keine Konfiguration eines Datenkontexts. Sein Hauptziel ist maximale Leistung und Einfachheit.
Die wichtigsten Vorteile von Dapper:
- Geschwindigkeit: Dapper arbeitet nahezu so schnell wie rohe ADO.NET-Befehle, da es dynamische IL-Code-Generierung für das Mapping von Ergebnissen verwendet.
- Einfachheit: Minimaler Code für die Ausführung von Abfragen. Keine komplexen Konfigurationen erforderlich.
- Kontrolle über SQL: Sie schreiben SQL-Abfragen manuell, was Ihnen die volle Kontrolle darüber gibt, welche Daten wie abgerufen werden.
- Flexibilität: Funktioniert mit allen ADO.NET-Anbietern (SQL Server, PostgreSQL, MySQL, SQLite usw.).
- Erweiterbarkeit: Lässt sich leicht in bestehende Projekte und andere ORMs integrieren.
Dapper ist ideal für Projekte, bei denen Leistung und direkte SQL-Kontrolle wichtig sind, sowie für Microservices und stark ausgelastete Anwendungen.
Dapper installieren
Dapper wird über NuGet, den Paketmanager für .NET, verteilt. Die Installation ist auf mehreren Wegen möglich:
Über die Paketmanager-Konsole (Visual Studio):
Install-Package Dapper
Über die .NET CLI (empfohlen):
dotnet add package Dapper
Über die NuGet-Oberfläche in Visual Studio:
- Rechtsklick auf das Projekt → "NuGet-Pakete verwalten".
- Wechseln Sie zum Tab "Durchsuchen".
- Suchen Sie nach "Dapper" und klicken Sie auf "Installieren".
Nach der Installation erscheint im Projekt ein Verweis auf die Assembly Dapper.dll. Es sind keine zusätzlichen Abhängigkeiten erforderlich – die Bibliothek arbeitet auf Basis des standardmäßigen System.Data.
Schnellstart mit einem Codebeispiel
Betrachten wir ein minimales Beispiel für die Arbeit mit Dapper. Angenommen, wir haben eine Tabelle Users in einer SQL Server-Datenbank:
CREATE TABLE Users (
Id INT PRIMARY KEY IDENTITY,
Name NVARCHAR(100) NOT NULL,
Age INT NOT NULL
);
Der C#-Code zum Abrufen aller Benutzer:
using System.Data.SqlClient;
using Dapper;
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main()
{
string connectionString = "Server=localhost;Database=TestDB;Trusted_Connection=True;";
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
// Einfache SELECT-Abfrage
var users = connection.Query<User>("SELECT * FROM Users");
foreach (var user in users)
{
Console.WriteLine($"{user.Id}: {user.Name}, {user.Age} Jahre");
}
}
}
}
Wie Sie sehen, mapped Dapper die Ergebnisse der SQL-Abfrage automatisch auf C#-Objekte. Die Methode Query<T> ist die Hauptmethode für die Ausführung von SELECT-Abfragen.
Wichtige Methoden/Funktionen von Dapper
Dapper bietet eine Reihe von Erweiterungsmethoden für das IDbConnection-Interface. Hier sind 10 wichtige Methoden.
1. Query<T>
Was es tut: Führt eine SQL-Abfrage aus und gibt eine Sammlung von Objekten des angegebenen Typs T zurück. Wird für SELECT-Abfragen verwendet, die mehrere Zeilen zurückgeben.
Parameter:
sql(string) — Die SQL-Abfrage.pa