DDD, Wertobjekte und ORM

8

Wertobjekte haben keine Identität. ORM benötigt zur Aktualisierung der Datenbank eine Identität.

Wie man ORM trickst?

(Wenn ID für Wertobjekt als intern markiert wird, funktioniert ORM nicht in einer anderen Assembly, und es wird nicht in die gleiche Assembly verschoben.)

Vielen Dank im Voraus.

    
Arnis Lapsa 04.06.2009, 08:45
quelle

3 Antworten

4

Soweit mein Verständnis von DDD Wert ist, sind Objekte nur eine Möglichkeit, Ihre Entitäten zu partitionieren. Wenn ein Wertobjekt mit einer ID in der Datenbank gespeichert werden soll, ist es kein Wertobjekt.

Beispiel:

Das Domänenmodell sieht so aus (C #):

%Vor%

Die entsprechende Datenbanktabelle würde ungefähr so ​​aussehen (Pseudo-SQL):

%Vor%

Um die Adressen in einer separaten Tabelle zu speichern, würden Sie es zu einer Entität machen, die eine ID hat.

    
Albic 05.06.2009, 08:26
quelle
35

Wenn Eric Evans über "Entitäten haben Identität, Wertobjekte nicht" redet, spricht er nicht von einer ID-Spalte in der Datenbank - er spricht von Identität als Konzept .

VOs haben keine konzeptionelle Identität. Das bedeutet nicht, dass sie keine Persistenz Identität haben sollten. Lassen Sie sich durch die Persistenz-Implementierung nicht Ihr Verständnis von Entitäten und VOs erklären.

Siehe meinen Beitrag hier .

    
Vijay Patel 05.06.2009 10:30
quelle
3

Persönlich habe ich das Id-Feld im Wertobjekt - ich behandle es als ein anderes Attribut des Wertobjekts (wie Name, Ort usw.).

Es mag nicht wahr sein DDD, aber es funktioniert für mich.

    
TWith2Sugars 05.06.2009 08:06
quelle