У меня есть 2 таблицы, которые имеют круговую зависимость. A Title
имеет Element
s, и в свою очередь каждый Element
указывает на следующее Title
на пути.Как разрешить круговые зависимости в сопоставлениях?
Однако, когда я называю BuildSessionFactory()
на моем экземпляре NHibernate.Cfg.Configuration
я получаю следующее исключение:
ассоциацию из таблицы элементов относится к неподключенному класса: ElementDAO
Я считаю это является результатом круговых зависимостей (он не может отображать заголовок сначала, потому что он относится к элементу, и он не может отображать элемент, не зная Title).
Вопрос: Как объединить два сопоставления для разрешения круговых зависимостей?
Соответствующие данные (и фрагменты кода) следующим образом:
Название
- Id (первичный ключ)
- Имя
Элемент
- id_Title (Foreign Key)
- Имя
- id_Title_Child (Foreign Key)
Они представляют собой структуру данных, например, так:
Мой код:
TitleDAO:
public class TitleDAO{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual ICollection<ElementDAO> Elements { get; set; }
}
TitleDAO Mapping:
<class name="TitleDAO" table="Title" lazy="true">
<id name="Id">
<generator class="identity"/>
</id>
<property name="Name"/>
<set name="Elements" table="Element" lazy="true">
<key column="id_Title"/>
<many-to-many class="ElementDAO"/>
</set>
</class>
ElementDAO:
public class ElementDAO{
public virtual string Name { get; set; }
public virtual TitleDAO Child { get; set; }
}
ElementDAO Mapping:
<class name="ElementDAO" table="Element" lazy="true">
<property name="Name"/>
<many-to-one name="Child" class="TitleDAO" column="id_Title_Child"/>
</class>