Al usar NHibernate, bajo qué circunstancias elegiría mapear una colección usando un elemento compuesto para obtener una colección de objetos de valor, en lugar de crear una entidad en toda regla y mapearla utilizando uno a muchos?NHibernate: ¿Por qué usaría <composite-element> sobre <one-to-many> para asignar una colección
Es posible que tenga una clase de valor-tipo 'PostalAddress' para representar una dirección. Si tenía una entidad persona y cada persona puede tener muchas direcciones se podría asignar esta relación como ésta (Opción 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>
O bien, podría crear una entidad 'PersonAddress' que tiene la propiedad escrito un 'PostalAddress' en y mapear las direcciones con una asociación uno-a-muchos (opción 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>
¿hay razones para no hacer la opción 1? ¿El hecho de que la tabla PersonAddress tenga una columna de ID sugiere que debería ser una entidad en sí misma, por lo tanto, use la opción 2?