Zum Inhalt springen
Portfolio-Projekt von Amir Reza Afshar. Ohne Registrierung testen: Admin-Panel Autorenbereich
Softwareentwicklung

Dependency Injection in ASP.NET Core verständlich erklärt

Warum ein Controller seine Abhängigkeiten nicht selbst erzeugen sollte und wie der eingebaute DI-Container den Code testbar macht.

In vielen Einsteigerprojekten erzeugt ein Controller seine Abhängigkeiten selbst: new BlogManager(new EfBlogRepository()). Das funktioniert, koppelt aber alles fest aneinander. Dependency Injection löst dieses Problem elegant.

Das Prinzip

Eine Klasse beschreibt im Konstruktor, was sie braucht – zum Beispiel ein IBlogService. Wer das konkrete Objekt erzeugt, entscheidet nicht die Klasse selbst, sondern der DI-Container. Die Klasse kennt nur die Schnittstelle.

Registrierung in Program.cs

In ASP.NET Core werden Dienste beim Start registriert: services.AddScoped<IBlogService, BlogManager>(). „Scoped“ bedeutet: Pro HTTP-Anfrage gibt es genau eine Instanz. Das ist ideal für den Datenbankkontext, denn alle Repositories einer Anfrage teilen sich dieselbe Verbindung.

Die drei Lebensdauern

Singleton lebt so lange wie die Anwendung, Scoped so lange wie eine Anfrage und Transient wird bei jeder Verwendung neu erzeugt. Als Faustregel gilt: Alles, was den Datenbankkontext verwendet, ist Scoped.

Warum sich das lohnt

Im Test können Sie statt der echten Datenbank ein Fake-Repository übergeben. Und wenn Sie später von SQL Server auf SQLite wechseln, ändern Sie eine Zeile in der Registrierung – nicht hunderte Stellen im Code.

Dependency Injection wirkt anfangs wie zusätzlicher Aufwand. Spätestens beim ersten Test oder Datenbankwechsel zeigt sich, wie viel Zeit es spart.

2 Kommentare

Frage zu Singleton

Lukas, vor 4 Wochen

Kann man den DbContext auch als Singleton registrieren? Oder führt das zu Problemen?

Endlich verstanden

Sophie R., 8. Oktober 2026

Ich habe DI dreimal in Tutorials gesehen, aber erst hier wirklich verstanden, warum Scoped wichtig ist.

Kommentar schreiben

Ihre E-Mail-Adresse wird nicht veröffentlicht.

Ihre Bewertung

Name, Betreff und Kommentar werden öffentlich angezeigt, die E-Mail-Adresse nur intern gespeichert. Die Demo-Daten werden regelmäßig gelöscht. Mehr dazu in der Datenschutzerklärung.