Ich habe ein Modell wie diesesMapping zwei bidirektionale Sammlungen des gleichen Typs in Nhibernate
public class Scene
{
public virtual ICollection<Ray> Rays1 {get; set;}
public virtual ICollection<Ray> Rays2 {get; set;}
}
public class Ray
{
public virtual Scene Parent {get; set;}
}
Wenn ich es auf diese Weise zu halten und wo es sich mit zwei Eins-zu-viele-Beziehungen dies geschieht:
- erstellen Szene
- hinzufügen 3 Artikel auf Rays1
- hinzufügen 2 Artikel auf Rays2
- zu Datenbank-Commit
- Query-Szene aus der Datenbank
Nun sind beide Rays1 und Rays2 haben 5 Elemente, weil sie
Die einzige Lösung, die gleichen Eltern-ID teilen, die ich von ist einfiel 2 neue Klassen von Ray zu erben und dann kartieren Sie jede von ihnen mit Eins-zu-Viele-Beziehungen. Dadurch werden zwei separate Tabellen in der Datenbank erstellt, die jedoch genau dieselben Spalten haben. Es fühlt sich einfach nicht richtig an ...
Gibt es noch andere Lösungen?
--edit--
Als Referenz sind hier meine Mapping-Dateien:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="PanoMeasurer.Core.Domain"
namespace="PanoMeasurer.Core.Domain">
<class name="Panorama">
<id name="OID" generator="guid.comb"/>
<property name="HeadingBase"/>
<set name="Rays1" cascade="all-delete-orphan">
<key column="PanoramaId" />
<one-to-many class="Ray"/>
</set>
<set name="Rays2" cascade="all-delete-orphan">
<key column="PanoramaId" />
<one-to-many class="Ray"/>
</set>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="PanoMeasurer.Core.Domain"
namespace="PanoMeasurer.Core.Domain">
<class name="Ray">
<id name="OID" generator="guid.comb"/>
<property name="Heading"/>
<property name="Elevation"/>
<many-to-one name="Owner" class="Panorama" column="PanoramaId" />
</class>
</hibernate-mapping>
Schöne Idee ... Ich musste eine neue Eigenschaft RayType auf der Ray-Klasse erstellen, aber es ist viel besser als zwei vergebliche Klassen erben. Auch ist für den Kunden alles unsichtbar, was perfekt ist ... Vielen Dank ... – RBasniak