К сожалению, кажется, что с EF6 (в большинстве случаев) невозможно иметь полное невежество с сущностями, когда кто-то хочет правильно обрабатывать так называемые потерянные записи.
Как удалить дочерний элемент из много связанных записей в первой базе данных кода EF?
Итак, каковы альтернативы?
Укусите пулю и сделайте сущности осведомленными (минимально).
Очевидно не то, что вам нужно, но если мы
- переделаем наши сущности более DDD -подобным образом в виде больших агрегатов, ориентированных на операции / задачи вместо простых сущностей
- и разумно абстрактное постоянство
это может в конечном итоге не быть таким плохим, как могло бы выглядеть сейчас
Добавить некоторую умную пользовательскую обработку потерянных объектов в SaveChanges (или et c). )
Что-то вроде { ссылка }
Или попытайтесь извлечь максимум из идентифицирующих отношений - для них работает удаление сирот.
Не удалять права es
Если не существует требования (ограничение домена, размер / производительность БД, GDPR ...) для фактического удаления этих объектов, вы можете просто пометить их как удаленные или добавить к некоторым DeletedParent
.
Хорошо, я понимаю, что это может быть неосуществимо, и это сделает некоторые аспекты системы более сложными и подверженными ошибкам, но во многих случаях не удаление сущностей может быть весьма выгодным (способность откатывать операции назад, создавать исторические данные). data and et c.)
Использование EF Core (2.2?)
EF Core поддерживает правильное удаление сирот .
И пока вы не сможете использовать EF Core 3.0 с. NET Framework, вы все еще можете попробовать EF Core 2.2, поскольку он также должен поддерживать удаление осиротевших.
Да, есть Есть некоторые различия между EF и EF Core, но для проекта, который, по-видимому, находится на ранних стадиях, они не являются непреодолимыми.