Domänenmodell und Abfrage


8

Ich bin neu bei DDD und habe nur in Transaction-Script-Apps mit einem anämischen Modell oder nur in Big Balls of Mud gearbeitet. Bitte verzeihen Sie mir jede Terminologie, die ich missbrauche.

Ich versuche, die richtige Trennung zwischen dem Domänenmodell und dem Repository zu verstehen. Was ist der richtige Weg, um ein Domänenobjekt zu erstellen, das aus einer Datenbank stammt, vorausgesetzt, dass (unglaublich vereinfacht) Objekte nach Status (Rückgabe enumerable) oder ID abgefragt werden müssen .

  • Sollte eine Fabrik die Objekte erstellen, Methoden für GetByStatus()und GetByID()unter Verwendung eines DIed-Repositorys verfügbar machen?
  • Sollte ein Repository direkt aufgerufen werden und wissen, wie ein Domänenmodell aus dem DTO erstellt wird?
  • Sollte das Domänenmodell einen Konstruktor zum Abrufen der ID haben, der ein DIed-Repoistory verwendet, um den Anfangszustand zu laden, und eine andere (?) Methode für die Liste verwendet?

Ich bin mir nicht sicher, was der beste Weg wäre, und diese Frage hat eine Antwort, die jeden befürwortet (diese sind sicherlich gegenseitig exklusiv).

Antworten:


6

Das Repository ist ein Dienst des Domänenmodells, der als Schicht zwischen Ihrer Domäne und dem Datenspeicher fungiert. Es sollte eine Methode zum Abfragen von Entitäten und Methoden zum Speichern und Aktualisieren dieser Entitäten enthalten.

Zur Beantwortung Ihrer Frage:

  • Ich würde nein sagen. Ich denke, wenn Sie Fabriken verwenden, um Ihr Domänenobjekt zu erstellen, sollte es offensichtlich sein, dass das Domänenobjekt aus dem Datenspeicher stammt und nicht neu erstellt wird.
  • Ja, wenn du willst. Ich denke, dies ist ziemlich nah an den Implementierungsdetails und kann Ihnen überlassen bleiben.
  • Definitiv nicht. Wie ich bereits sagte, sollte es offensichtlich sein, woher die Entität kommt.

Wenn Sie ein ORM-Framework verwenden, ist dieses Framework bereits eine Art Repository. Nutzen Sie es voll aus und erfinden Sie das Rad nicht neu und fügen Sie ihm keine unnötige Komplexität hinzu.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.