© best_vector/Shutterstock.com
Teil 2: Repository-Pattern - Kapselung der Datenschicht

Mehr Köche für besseren Brei


Das Repository-Pattern ermöglicht es, die Datenschicht zu abstrahieren, wodurch eine generische Vorlage für sämtliche Datenquellen innerhalb eines Projekts implementiert werden kann. Insbesondere im Zeitalter von Microservices-Architekturen und Verbindlichkeiten zu Third-Party-Datenquellen wie SAP oder SharePoint gewinnt das Repository-Pattern zunehmend an Relevanz.

Zu Beginn der Artikelserie haben wir bereits ausgiebig betrachtet, wofür Designpatterns gut sind, was hinter dem Akronym SOLID steckt und welche Auswirkung SOLID auf den Code hat. Der Fokus des letzten Artikels lag auf Dependency Injection, womit Abhängigkeiten zwischen Klassen aufgelöst werden können. Im einem zweiten Schritt erweitern wir unsere Softwarearchitektur um das Repository-Pattern.

Motivation

In nahezu jedem Projekt ist eine Verbindung zu mindestens einer Datenbank Voraussetzung. Sei es, um durch die Applikation bedingte Einstellungen zu dynamisieren, Benutzer und Rollen zu verwalten oder gar, um komplexe Relationen zwischen Daten in der Applikation abzubilden. Im Grunde ist das auch schnell geschehen: Innerhalb weniger Minuten ist ein Connection String zusammengestellt, der app.config bzw. web.config hinzugefügt, und schon lässt sich der Datenbankkontext in der Applikation konsumieren. Genauso schnell wie die Datenbank in die Applikation eingebunden werden kann, lassen sich binnen weniger Zeilen Code Transaktionen mit der Datenbank ausführen. Für folgende Beispiele verwende ich Entity Framework als ORM (Object-relational Mapping) und demonstriere in Listing 1, wie sich ein Objekt mittels Entity Framework in die Datenbank persistieren lässt. Eine adäquate Transaktion ließe sich auch mit Listing 2 durchführen.

Listing 1: Persistieren eines Objekts in die Datenbank

public class PlacesController : Controller { private ExampleDatabase db = new ExampleDatabase(); public async Task<ActionResult> Create([Bind(Include = "Id,Title,Location,Created,Modified,CreatedBy,ModifiedBy")] Place place) { if ...

Exklusives Abo-Special

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang