Вопрос: как написать соглашение, которое предотвращает удаление ссылки на сущность, если она наследуется от типа Root
?
Я использую свободный nhibernate, и это функция автоматического сопоставления.По умолчанию включено каскадное удаление.
Все было действительно круто, пока я наконец не наткнулся на случай, когда мне действительно нужно удалить агрегатный корень, который ссылается на другой.
У меня есть корни User
и Application
.User
регистры Applications
.Если он зарегистрирован по ошибке, существует небольшой промежуток времени, в течение которого User
с ролью Admin
может удалить его (я уверен, мне никогда не понадобятся эти данные).
Когда User
удаляет Application
из-за каскадного удаления, nhibernate сам удаляет User
(что за ирония ...).
Я не уверен, какукажите каскадное сохранение SaveUpdate для приложения-> Только для ассоциации пользователей:
Делает хитрость:
m.References(x=>x.RegisteredBy).Cascade.SaveUpdate(); //RegisteredBy.Type==User
Дополнительно, сказал fnh, где искатьпереопределения:
var m=new AutoPersistenceModel(storeCfg);
m.UseOverridesFromAssembly(assembly);