Неожиданное количество строк в Nhibernate при удалении родительских записей со связанными дочерними записями - PullRequest
0 голосов
/ 17 февраля 2010

У меня есть родительская таблица, Заказы и дочерняя таблица, [Детали заказа], я установил текущие отображения как -

(в родительском классе Order)

HasMany<OrderDetails>
(x => x.Details).KeyColumn("OrderId").Cascade.AllDeleteOrphan().Inverse();

(в классе ребенка [детали заказа])

References(x => x.ParentOrder).Column("OrderId").Not.Nullable().Cascade.None();

Я пытаюсь удалить родительский объект, вызвав -

session.Delete(parent);
session.Flush();

это работает, только когда есть только одна дочерняя запись, если есть более одной дочерней записи, дочерние записи удаляются, а родительские нет !!! И я получаю страшно - Неожиданная ошибка подсчета строк.

Я уверен, что это что-то глупое, что я делаю, но траление в сети ничего не дало.

Спасибо

1 Ответ

1 голос
/ 17 февраля 2010

Хорошо, я понял это, я был глуп, но тогда ответ мог бы помочь кому-то еще, вот так.

Таблица [Детали заказа] имеет составной ключ и связана си таблицы [Заказы] и [Продукты] (Да, это база данных Northwind, с которой я работаю).Для моего теста я не отобразил свою таблицу Products и пометил свой класс [Order Details] одним первичным ключом, а не составным ключом.Таким образом, когда Nhibernate удаляет строки на основе ключа, он ожидает, что будет удалена только одна строка, тогда как в базе данных существовало несколько.Вот почему я получил ошибку.Скорее умный из Нибернат.

...