Я столкнулся с интересной проблемой, связанной с Entity Framework, и, основываясь на коде, который мне пришлось использовать для ее решения, я подозреваю, что мое решение далеко не идеально. У меня есть отношение 1-ко-многим между таблицей A и таблицей B, где объекты в таблице B имеют ссылку на таблицу A. У меня есть сценарий, в котором я хочу одновременно удалить всех дочерних элементов в таблице A, и я подумал, что этого можно добиться, просто очистив коллекцию:
Entity.Children.Clear()
К сожалению, когда я попытался сохранить изменения, это вызвало нарушение внешнего ключа.
Отношения добавляются или
удалено из набора ассоциаций
'FK_EntityB_EntityA. С кардинальностью
ограничения, соответствующие «EntityB»
также должен быть добавлен или удален.
Решение, которое я придумал, состояло в том, чтобы вручную удалить объект через DeleteObject () контекста сущности, но я просто знаю, что используемая логика ошибочна.
while (collection.Any())
Entities.DeleteObject(collection.First());
С одной стороны, тот факт, что мне пришлось использовать цикл Where (), кажется далеко не идеальным, но я полагаю, что это чисто семантическая оценка с моей стороны. В любом случае, что-то не так с тем, как я это делаю, или, возможно, есть лучший способ очистить коллекцию дочерних сущностей от сущностей, чтобы Entity Framework правильно вызывала удаление хранилища данных на всех удаленных объектах?