NHibernate - предотвращение удаления на конкретном объекте (т.е. сделать доступным только для чтения) - PullRequest
4 голосов
/ 01 октября 2009

Как я могу предотвратить NHibernate от удаления одной сущности определенного класса? Программный способ, который я использую в данный момент, предусматривает проверку уникального поля сущности «Имя».

Вот сценарий: у меня есть человек и группа. В группе могут быть люди и другие группы. Если попытаться удалить группу с именем «Администраторы», этого не произойдет из-за ограничений на уровне транзакций, которые я применяю (в частности, проверяя столбец / поле «Имя» группы, поскольку это уникально). Так что все в порядке.

Но теперь я думаю, что если будет создана другая группа и «Администраторы» станут ее подгруппой, проверка не будет выполнена. Это будет означать удаление «Админов». Так что я ищу лучший путь, кроме обхода родительского / дочернего дерева содержания, например используя NHibernate

Я не могу использовать общеклассовое ограничение, такое как 'class Mutable = false', я имею в виду ограничение только для чтения для одной или двух отдельных сущностей определенного класса.

С уважением,

_NT

1 Ответ

3 голосов
/ 01 октября 2009

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

Этот является примером использования слушателей.

...