Wenn Sie NHibernate verwenden, unter welchen Umständen würden Sie eine Sammlung mithilfe eines Composite-Elements einer Auflistung von Wertobjekten zuordnen und nicht erstellen eine vollständige Entität und kartieren sie mit Eins-zu-Viele?NHibernate: Warum würden Sie <composite-element> über <one-to-many> verwenden, um eine Sammlung zuzuordnen
Sie könnten eine Werttypklasse 'PostalAddress' haben, um eine Adresse darzustellen. Wenn Sie eine Person Unternehmen und jede Person hatte viele Adressen haben könnten Sie könnten diese Beziehung wie folgt aus (Option 1) Karte:
<bag name="Addresses" table="PersonAddress">
<key column="PersonID"/>
<composite-element class="PostalAddress">
<property name="StreetAddress"/>
<property name="Town"/>
<property name="City"/>
<property name="Postcode"/>
</composite-element>
</bag>
Oder Sie könnten eine Entität ‚PersonAddress‘, die eine ‚Postal‘ typisierte Eigenschaft hat erstellen auf sie und ordnen sie die Adressen mit einem one-to-many-Verband (Option 2):
<bag name="Addresses">
<key column="PersonID"/>
<one-to-many class="PersonAddress"/>
</bag>
<class name="PersonAddress">
<id name="Id">
<generator class="native"/>
</id>
<component name="Address" class="PostalAddress">
<property name="StreetAddress"/>
<property name="Town"/>
<property name="City"/>
<property name="Postcode"/>
</component>
</class>
gibt es Gründe, nicht zu tun Option 1? Stellt die Tatsache, dass die PersonAddress-Tabelle eine ID-Spalte hat, darauf hin, dass es sich um eine Entität selbst handeln sollte, und verwenden Sie daher Option 2?