Попробовав несколько решений, чтобы получить NHibernate для удаления сиротских записей. Учитывая следующую структуру:Не получать NHibernate Cascade Удалить Сирота, работающая с Automapping
public class Parent {
public virtual ICollection<Domain> Domains {get;set;}
}
public class Domain{
public virtual Parent Parent {get;set;}
}
UPDATE: Это не имеет ничего общего с инкубатором. Это заставило что-то другое пойти не так, как было исправлено. Но удаление сирот еще не происходит я попытался следующие:
Добавить атрибут на домены (и на родительское свойство класса домена) в соответствии с http://mookid.dk/oncode/archives/643
Добавлено Автоотображение как :
AutoMap.Override<Parent>(map => { map.HasMany(x => x.Domains).Inverse().Cascade.All(); }) AutoMap.Override<Parent>(map => { map.HasMany(x => x.Domains).Cascade.All(); })
Оба вызванные записи домена должны быть сохранены с pARENT_ID = нуль.
Есть ли хороший пример того, как достичь этого в сочетании с Automapping?
я не понимаю. Что такое Domains.Remove и Domains.Добавить все о? SetName не имеет для меня никакого смысла. И для первой строки автомата: вам нужно будет установить родительское свойство во вновь созданном экземпляре домена вручную, так как экземпляр домена контролирует взаимосвязь. После этого экземпляр домена должен быть сохранен с родительским идентификатором. –
Это всего лишь пример манипуляции с моделью. При изменении Parent.Name мне нужно удалить 1 домен из коллекции и добавить новый. Проблема не в постоянстве, потому что новые домены сохраняются. Это просто, что записи Orphan Domain не удаляются, но вместо этого их столбец Parent_Id установлен в null – amaters
, можете ли вы опубликовать код для манипуляции с моделью? То, что вы описали, возможно, произойдет, если вы удалите экземпляр домена из коллекции Domains и одновременно манипулируете/удаляете родительскую ассоциацию в экземпляре домена. Возможно, NHibernate нелегко отслеживает потерянный экземпляр. Обновление –