Minimal APIs + EF Core: eine saubere .NET 8 API
Program.cs stopft.
Strukturierung mit Route Groups
app.MapGet -Aufrufe in Program.cs zu stapeln. Die Lösung lässt sich in einem Wort zusammenfassen: `MapGroup` . Jede Ressource erhält ihre eigene Gruppe mit Präfix, Filtern und Metadaten, definiert in einer dedizierten Extension-Methode:
Program.cs reduziert sich dann auf app.MapTodos(); — ein Einstiegspunkt pro Ressource, der Rest lebt in kohärenten Dateien.
DbContext und Migrationen
DbContext wird über AddDbContext registriert, das Modell in OnModelCreating definiert, und vor allem lässt man das Schema niemals manuell driften: Jede Änderung durchläuft eine versionierte Migration.
dotnet ef migrations add InitialCreate generiert und beim Start mit db.Database.MigrateAsync() angewendet — niemals EnsureCreated , das die gesamte History umgeht. Die offizielle Dokumentation beschreibt den Workflow im guide EF Core migrations .
Typisierte Ergebnisse und Validierung
IActionResult zurückzugeben, gibt man eine Union typisierter Ergebnisse zurück: Die Signatur dokumentiert die möglichen HTTP-Statuscodes, und OpenAPI exponiert sie automatisch.
Results<Created<Todo>, ValidationProblem> ist selbstdokumentierend : Keine redundanten [ProducesResponseType] -Attribute erforderlich.
Alles testbar halten
AppDbContext mit dem In-Memory- oder SQLite-Provider, ruft den Handler auf und inspiziert das TypedResults . Für End-to-End-Integrationstests lädt WebApplicationFactory<T> die vollständige Anwendung im Speicher und ermöglicht das Aufrufen der echten Endpunkte.
Eine Minimal API ist keine minderwertige API. Gut in Gruppen und typisierte Ergebnisse aufgeteilt, bietet sie weniger Boilerplate für mehr Garantien — und genau das erwartet man von einem modernen Framework.