Проблема:
Мне нужно сохранить обновленный отдельный объект EF в базе данных.
Удаленная сущность создается путем связывания базовой сущности, затем
foreach child ...
entity.children.add(child)
Я добавляю массив дочерних объектов, который я также получаю из bind в контроллере.
Я хочу, чтобы старая сущность была полностью заменена новой, это означает:
entity.property => update (easy)
entity.child => delete old child if not exists in the new,
update if already exists (easy),
or add if it doesnt exist already
Что у меня так далеко:
items tempitem = new items() { id = item.id };
_context.items.Attach(tempitem);
_context.items.ApplyCurrentValues(item);
foreach (var itemchild in item.children)
{
childEntity tempchild= new childEntity () { parentid = item.id };
_context.childEntity.Attach(tempchild);
_context.childEntity.ApplyCurrentValues(itemchild );
}
Это позволяет мне точно обновлять базовую сущность, а также обновлять любые существующие сущности.
Это не позволяет мне удалять старые объекты - попытался сделать
item.children.Clear()
но ничего не происходит, а также когда я пытаюсь добавить новую дочернюю сущность (которая была привязана к отключенному) - тоже ничего не происходит.
Это не может быть слишком сложно, не так ли? Я думаю о том, чтобы обратиться к NHibernate, где все кажется менее раздутым и более простым, но мощным ...