любая помощь, которую вы можете оказать, с благодарностью принята. Я смотрел на эту проблему снова и снова и не могу найти решение. Это, вероятно, смотрит мне в лицо: (
У меня есть следующий класс со списком родителей и детей, которые необходимо сохранить в таблице иерархии.
class Item
{
public virtual int Id {get;set;}
public virtual List`<Item`> Parents {get;set;}
public virtual List`<Item`> Children {get;set;}
}
В настройках гибернации у меня есть:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="Pl.Components" namespace="Pl.Components"`>
<class name="Pl.Components.Item, Pl.Components" table="Item">
<id name="Id" type="Int32" column="Id" >
<generator class="identity" />
</id>
<bag name="Parents" lazy="true" table="Hierarchy" cascade="save-update">
<key column="ChildId"/>
<many-to-many class="Item" column="ParentId" />
</bag>
<bag name="Children" lazy="true" table="Hierarchy" cascade="delete">
<key column="ParentId"/>
<many-to-many class="Item" column="ChildId"/>
</bag`>
</class>
</hibernate-mapping>
Это приводит к дублированию ключей в таблице иерархии, поскольку пары ключей вставляются как для дочернего, так и для родительского элемента.
Есть ли какое-либо решение этой проблемы, кроме сохранения родительской и дочерней иерархий в отдельных таблицах?