У меня есть общий суперкласс (предположим, что он Employee
), который имеет (среди прочих) подклассы Engineer
и Salesman
.
Структура таблицы классов Employee
моделируется с использованием таблицы наиерархия.
A Department
объект ссылается как на продавцов, так и на инженеров:
public class Department
{
public IEnumerable<Engineer> Engineers { get; set; }
public IEnumerable<Salesman> Salesmen { get; set; }
}
Проблема возникает, когда я очищаю коллекцию Engineer
s от Department
:
- Когда оба отношения отображаются с помощью
cascade=none
или cascade=all
(на стороне Department
), тогда все записи Salesman
получают свой внешний ключ со значением NULL (здесь это оператор, сгенерированный nHib: UPDATE dbo.Employee SET Department_id = Null WHERE Department_id = @p0;
. - Когда оба отношения отображаются с помощью
cascade=all-delete-orphan
, тогда я получаю ObjectDeletedException
, ссылаясь на совершенно другую коллекцию объекта Department
(не могу понять это) - при сопоставлении с
cascade=all
или cascade=none
и таблицей для стратегии подкласса все кажется работоспособным - при сопоставлении с
cascade=all-delete-orphan
и таблицей на подкласс *Стратегия 1037 *, я снова получаю ObjectDeletedException
, ссылаясь на совершенно другую коллекцию объекта Department
, очевидно, мне не хватает некоторого базового nHib здесь ... но что это?