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