Lorsque vous utilisez NHibernate, dans quelles circonstances choisiriez-vous de mapper une collection en utilisant un élément composite pour donner une collection d'objets de valeur, plutôt que de créer une entité à part entière et la cartographie en utilisant un-à-plusieurs?NHibernate: Pourquoi utiliser <composite-element> sur <one-to-many> pour mapper une collection
Vous pourriez avoir une classe de type valeur 'PostalAddress' pour représenter une adresse. Si vous aviez une entité personne et chaque personne pourrait avoir de nombreuses adresses, vous pouvez mapper cette relation comme celui-ci (Option 1):
<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>
Ou vous pouvez créer une entité « PersonAddress » qui a la propriété de type 'PostalAddress de sur et cartographier les adresses avec un à plusieurs association (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>
y a-t-il des raisons de ne pas faire l'option 1? Est-ce que le fait que la table PersonAddress possède une colonne ID suggère qu'elle devrait être une entité elle-même, donc utilisez l'option 2?