Marten C# (.NET): Komplettguide 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

Marten für C# (.NET): Komplettguide zu Document DB und Event Store mit PostgreSQL

Marten ist eine leistungsstarke Bibliothek für .NET, die PostgreSQL in ein hybrides Datenspeichersystem verwandelt – eine Kombination aus Document Database (Dokumentendatenbank) und Event Store (Ereignisspeicher). Entwickelt vom Team JasperFx, ermöglicht sie Entwicklern, PostgreSQL wie ein NoSQL-System zu nutzen, ohne auf die Vorteile einer relationalen Datenbank verzichten zu müssen.

Warum Marten? In der modernen Softwareentwicklung braucht man oft die Flexibilität von Dokumenten-DBs (wie MongoDB) für komplexe, schwach strukturierte Daten – aber gleichzeitig die Zuverlässigkeit und Transaktionssicherheit relationaler Datenbanken. Marten löst dieses Problem: Es bietet einen LINQ-Provider für JSON-Dokumente in PostgreSQL sowie einen vollwertigen Event Store für Event Sourcing und CQRS-Patterns. Besonders nützlich ist das in Microservices-Architekturen, Audit-Systemen, Finanzanwendungen und allen Projekten, die flexible Datenmodelle mit strenger Konsistenz kombinieren müssen.

Die Bibliothek wird aktiv gewartet und in Produktionsumgebungen eingesetzt. Sie integriert sich nahtlos mit ASP.NET Core und Entity Framework Core (bei Bedarf) und bietet eine umfangreiche API für die Datenverarbeitung. Marten erstellt und aktualisiert automatisch das Datenbankschema, unterstützt Migrationen, Indizes und sogar Volltextsuche. Das macht sie zur idealen Wahl für .NET-Entwickler, die die Leistungsfähigkeit von PostgreSQL nutzen möchten, ohne komplexes SQL schreiben zu müssen.

Installation

Die Installation von Marten erfolgt über den NuGet Package Manager. Führen Sie einen der folgenden Befehle aus:

dotnet add package Marten

Oder über die Package Manager Console:

Install-Package Marten

Für den Event Store sind keine zusätzlichen Pakete nötig – alles ist im Hauptpaket enthalten. Für die Integration mit ASP.NET Core empfiehlt sich zusätzlich:

dotnet add package Marten.AspNetCore

Schnellstart

Ein minimales Arbeitsbeispiel umfasst die Konfiguration der PostgreSQL-Verbindung, die Definition eines Dokuments und die Durchführung von CRUD-Operationen.

using Marten;
using System;
using System.Threading.Tasks;

// 1. Dokument definieren
public class User
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
    public string Email { get; set; }
}

class Program
{
    static async Task Main(string[] args)
    {
        // 2. DocumentStore konfigurieren
        var store = DocumentStore.For(options =>
        {
            options.Connection("Host=localhost;Database=marten_db;Username=postgres;Password=password");
            options.AutoCreateSchemaObjects = AutoCreate.All; // Automatische Tabellenerstellung
        });

        // 3. Session für die Arbeit öffnen
        using var session = store.LightweightSession();

        // 4. Dokument erstellen
        var user = new User
        {
            Id = Guid.NewGuid(),
            Name = "Max Mustermann",
            Age = 30,
            Email = "max@example.com"
        };

        session.Store(user);
        await session.SaveChangesAsync();

        // 5. Dokument per ID laden
        var loadedUser = await session.LoadAsync<User>(user.Id);
        Console.WriteLine($"Geladener Benutzer: {loadedUser.Name}, Alter: {loadedUser.Age}");

        // 6. Dokument aktualisieren
        loadedUser.Age = 31;
        session.Store(loadedUser);
        await session.SaveChangesAsync();

        // 7. Dokument löschen
        session.Delete(loadedUser);
        await session.SaveChangesAsync();

        Console.WriteLine("Fertig!");
    }
}

Dieses Beispiel zeigt die grundlegenden Operationen: Erstellen, Lesen, Aktualisieren und Löschen eines Dokuments. Ma

Empfehlungen