AutoMapper für C# (.NET): Vollständiger Leitfaden mit Beispielen

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

Einführung in AutoMapper für C# (.NET)

\n\n

In der modernen Entwicklung mit C# (.NET) tritt häufig die Aufgabe auf, ein Objekt in ein anderes zu konvertieren. Dies kann bei der Datenübertragung zwischen Anwendungsschichten (z. B. von der Datenbank zum DTO für eine API), beim Mapping von ViewModel zu Entity oder bei der Arbeit mit verschiedenen API-Versionen erforderlich sein. Das manuelle Schreiben von Code für jede solche Konvertierung ist eine mühsame, fehleranfällige und schwer wartbare Arbeit. Genau hier kommt AutoMapper ins Spiel.

\n\n

AutoMapper ist eine beliebte Open-Source-Bibliothek für .NET, die den Prozess des Mappings (der Zuordnung) von Eigenschaften eines Objekts zu einem anderen automatisiert. Sie basiert auf dem Prinzip „Konvention vor Konfiguration“ (convention over configuration). Das bedeutet, dass AutoMapper, wenn die Namen und Typen der Eigenschaften im Quell- und Zielobjekt übereinstimmen (oder bestimmten Regeln folgen), das Mapping ohne explizite Angabe von Regeln durchführen kann. Wenn die Regeln abweichen, können Sie diese mithilfe der flexiblen API einfach anpassen.

\n\n

Die Bibliothek reduziert den Umfang von Boilerplate-Code erheblich, macht den Code sauberer, verringert die Anzahl von Fehlern im Zusammenhang mit manuellen Zuweisungen und vereinfacht das Refactoring. AutoMapper wird häufig in Projekten mit ASP.NET Core, WPF, Xamarin und anderen .NET-Anwendungen eingesetzt.

\n\n

Installation von AutoMapper

\n\n

AutoMapper wird über NuGet – den offiziellen Paketmanager für .NET – verbreitet. Die Installation kann auf verschiedene Weise erfolgen:

\n\n

1. Über die Paket-Manager-Konsole (Package Manager Console)

\n
Install-Package AutoMapper
\n\n

2. Über die .NET CLI

\n
dotnet add package AutoMapper
\n\n

3. Über die Visual Studio-Oberfläche (Manage NuGet Packages)

\n

Öffnen Sie das Projekt -> Rechtsklick auf das Projekt -> "Manage NuGet Packages" -> suchen Sie "AutoMapper" -> installieren Sie die neueste stabile Version.

\n\n

Für die Arbeit mit ASP.NET Core wird außerdem empfohlen, das Paket AutoMapper.Extensions.Microsoft.DependencyInjection zu installieren, das die Integration mit dem DI-Container vereinfacht:

\n
dotnet add package AutoMapper.Extensions.Microsoft.DependencyInjection
\n\n

Schnellstart: Erstes Mapping

\n\n

Lassen Sie uns ein einfaches Beispiel erstellen. Wir haben eine Klasse UserEntity (aus der Datenbank) und UserDto (für die Übertragung an den Client).

\n\n
using AutoMapper;\n\n// 1. Quell- und Zielklassen\npublic class UserEntity\n{\n    public int Id { get; set; }\n    public string FirstName { get; set; }\n    public string LastName { get; set; }\n    public string Email { get; set; }\n}\n\npublic class UserDto\n{\n    public int Id { get; set; }\n    public string FirstName { get; set; }\n    public string LastName { get; set; }\n    public string Email { get; set; }\n}\n\n// 2. Erstellung der Konfiguration und des Mappers\nvar config = new MapperConfiguration(cfg =>\n{\n    cfg.CreateMap<UserEntity, UserDto>();\n});\n\nvar mapper = config.CreateMapper();\n\n// 3. Verwendung\nvar userEntity = new UserEntity\n{\n    Id = 1,\n    FirstName = "Ivan",\n    LastName = "Petrov",\n    Email = "ivan@example.com"\n};\n\nvar userDto = mapper.Map<UserDto>(userEntity);\n\nConsole.WriteLine(userDto.FirstName); // Gibt aus: Ivan
\n\n

In diesem Beispiel haben wir eine Map zwischen UserEntity und UserDto erstellt. Da die Eigenschaftsnamen übereinstimmen, hat AutoMapper sie automatisch zugeordnet. Die Methode Map<TDestination>(source) führt das Mapping durch und gibt ein neues Objekt des Zieltyps zurück.

\n\n

Wichtige Methoden und Funktionen von AutoMapper

\n\n

AutoMapper bietet eine umfangreiche API zur Konfiguration des Mappings. Nachfolgend sind 10 wichtige Methoden und Funktionen aufgeführt, die Sie am häufigsten verwenden werden.

\n\n

1. CreateMap<TSource, TDestination>()

\n

Was es tut: Erstellt eine Mapping-Konfiguration zwischen zwei Typen. Dies ist die Hauptmethode zum Deklarieren einer Map.

Empfehlungen