У меня есть следующие объектной модели:NHibernate отображение Проблема
- верхнего уровня абстрактный класс
Element
с большим количеством детей и потомков. - A класс
Event
. - Каждый
Element
содержит сумкуEvent
s. - У каждого
Event
есть указатель на родителяElement
.
До сих пор - довольно стандартное соотношение «один ко многим».
Но, я хочу использовать таблицу для конкретной стратегии класса. Таким образом, класс Element
не отображается в базу данных. Я попытался решить его таким образом: каждый из конкретных потомков Element
определяет свою собственную сумку Event
s. Проблема заключается в том, что каждый элемент <bag>
содержит элемент <key>
. Этот ключ указывает на свойство Parent
Event
. Он также делает столбец Parent
в таблице Event
s внешним ключом к таблице, которая содержит сумку! Но один столбец не может быть внешним ключом для нескольких таблиц, и я получаю исключение при вставке.
Я также пытался сделать поле Parent
в таблице Event
множеством в любом виде. Это сработало. Но когда я хочу сделать отношение двунаправленным, то есть добавить пакеты к потомкам Element
. Я возвращаюсь к той же проблеме. Bag => внешний ключ => исключение на вставке.
Я уверен, что этот случай не так уникален, как кажется. Заранее благодарю вас за помощь.