(Свободно) NHibernate: принудительное удаление внешнего ключа при удалении - PullRequest
1 голос
/ 19 октября 2010

У меня есть стандартное отношение родитель - ребенок (1: многие), настроенное с помощью Fluent NHibernate:

На родительской стороне:

HasMany(x => x.Items).Inverse().Cascade.All();

и на дочерней стороне:

Map(x => x.ItemCategory).Nullable().Index("idx_item_category").Not.LazyLoad()

(Изменить в ответ на комментарий Эпитки:)

Запись удаляется путем вызова

session.Delete(item_category)

Это единственная операция, выполненная втранзакция.

(конец редактирования)

В настоящее время, когда я удаляю запись ItemCategory, она каскадно удаляет все элементы, что, как представляется, работает в соответствии с ожиданиями в соответствии сдокументация.

Я хочу, чтобы Item.ItemCategory был установлен в null автоматически при удалении записи ItemCategory.

Я могу только отключитьполностью каскад, который приводит к поврежденной базе данных (элемент ссылается на отсутствующую категорию).Итак, в настоящее время я должен сделать это вручную, что немного более подвержено ошибкам, чем хотелось бы.

Возможно ли настроить это поведение?
session.Delete (item_category)

1 Ответ

1 голос
/ 20 октября 2010

Хотя это невозможно сделать из коробки, вы, вероятно, можете реализовать IPreDeleteEventListener, который запускает обновление HQL, чтобы установить для ItemCategory Items значение null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...