Frage

Wenn das Modell, das zu der Ansicht geführt wird vollständig durch einen einzigen Anruf zu einem einzigen Repository definiert werden. Mit anderen Worten, ist das Modell ein einziges Aggregat, oder sollte mein Modell aus getrennten Aggregaten aufgebaut sein, die jeweils mit einem eigenen Repository, in der Dienstschicht?

So wie ich es jetzt habe, ist ich einfach ein einziges Repository nenne das gesamte Modell zu füllen, die dann durch Ansicht dargestellt wird. Scheint, wie Aggregate, Repositorys und Modelle sind alle das gleiche Konzept wird.

War es hilfreich?

Lösung

Mein, das ist für „Keine der oben Genannten.“ Ich ziehe Präsentationsmodelle für Ansichten verwenden und Präsentationsmodelle brauchen keine Repository. Es gibt eine Vielzahl von Gründen:

  • Präsentationsmodelle ermöglicht es Ihnen, Ansichten und Controller zu entwerfen, bevor das Modell und die Datenbank zu entwerfen. So können Sie früh Benutzereingabe erhalten.
  • Präsentationsmodelle ermöglichen Sie ein ziemlich „flaches“ Modell zur Ansicht übergeben, so müssen Sie nicht über ORM Anliegen wie ein träges Laden sorgen.
  • Präsentation Modelle oft vereinfachen Modell verbindlich.
  • Wenn ein Präsentationsmodell verwenden, müssen Sie nicht über versehentlich Rückkehr Felder einen bestimmten Benutzer kümmern sollte nicht sehen dürfen, oder versehentlich Aktualisierung Felder, sollte der Benutzer zu aktualisieren, nicht zugelassen werden, da Sie nicht eine weiße Liste bekommen haben richtig.

Jetzt, nach genauer gesagt die Linie Ihrer Frage: Haben Sie eine Instanz des Präsentationsmodell bauen? Wie viele Repositories werden benötigt? Nun, diese Frage ist jetzt fast Antworten selbst. Sie gestalten das Präsentationsmodell die Anforderungen der Ansicht zu folgen. Sie entwerfen die Repositories folgenden gute TDD Praktiken, einschließlich der Identifizierung von aggregierten Wurzeln. Nun ist die Frage nach dem „Wie viele Repositories benötige ich dieses Modell zu instanziiert“ ist einfach. Sie untersuchen die aggregierten Wurzeln durch das Modell erforderlich, und verwenden Sie die, die Sie benötigen. Im Allgemeinen kann ich dies tun in einer einzigen LINQ-Abfrage.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top