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