Ersetzen ORM-POCOs Domänenentitäten?

10

Dies ist dieser Frage etwas ähnlich, aber weiter gefasst.

In der Regel mit ORMs wie EF 4.1 POCOs unterstützen, ist es nun sinnvoll , Ihre Domäne Entitäten zu haben sind die Objekte , die zu Ihrer Datenbank beibehalten werden?

Bei älteren ORMs wie EF 4 oder Linq-to-SQL wurden Ihre "Datenbankobjekte" automatisch generiert und eng mit Ihrer Datenbank gekoppelt. Daher wurden für nicht triviale Anwendungen robustere, intelligentere Domänenentitäten zugeordnet, bevor sie erstellt wurden an die Arbeit setzen.

Ist die Idee mit neueren ORMs, nur robuste Domänenentitäten zu erstellen und dann eine Datenschicht zu haben, die einfach eine Zuordnung zwischen diesen Domänenentitäten und Ihrem DBMS bereitstellt?

Beim Schreiben habe ich das Gefühl, dass dies immer das Ziel war, aber mit den verfügbaren Tools nicht ohne weiteres (leicht) möglich ist, zumindest nicht in der .NET-Welt.

Adam Rackis
quelle
EFv4 unterstützte auch die Zuordnung zu POCOs und handgeschriebenen Klassen.
Ladislav Mrnka

Antworten:

9

Ich denke, das allgemeine Ziel bei ORMs ist, dass die Datenbank direkt Domänenobjekten zugeordnet wird, die idealerweise POCOs sind. Die Antwort auf Ihre Frage lautet also Ja. Da EF nun in der Lage ist, POCOs zuzuordnen, ist es ideal, diese POCOs als Domänenentitäten zu betrachten. Für andere ORMs wie NHibernate ist dies seit einiger Zeit möglich, und ich glaube, dass die Leute sie im Allgemeinen als solche verwenden.

Dieses Ziel, Domänenentitäten direkt der Datenbank zuzuordnen, ist jedoch nicht immer erreichbar. In einigen Fällen ist eine erhebliche Übersetzung zwischen der Datenbank und dem Domänenmodell erforderlich. Das ORM ist möglicherweise nicht in der Lage, die Übersetzung durchzuführen. In diesem Fall möchten Sie möglicherweise eine Schicht von Zwischen-POCOs, die mit dem ORM der Datenbank zugeordnet sind, und dann eine Übersetzungsschicht, die sie in Domänen-POCOs und wieder zurück ändert.

RationalGeek
quelle