Вместо того, чтобы удалять запись из базы данных, я планирую использовать логический столбец, такой как isActive
в каждой таблице, и управлять его состоянием true/false
.Поддержание ссылочной целостности без фактического удаления записи
Обычно при удалении записи из базы данных,
- ссылочную целостность сохраняется, а значит, вы не можете удалить его, если перед удалением его зависимостей.
- при запросе удаленной записи, он возвращает нуль
Как можно достичь тех же результатов в автоматизированном режиме с использованием Entity Framework? Поскольку проверка поля isActive для каждого объекта в каждом запросе вручную кажется слишком большой работой, которая будет подвержена ошибкам. То же самое справедливо и для маркировки зависимостей как isActive=false
.
EDIT:
Моя цель не ограничивается точка-в-времени запросов. Позвольте мне привести пример. UserA опубликовал фотографию, и UserB написал комментарий к ней. Затем UserB хотел удалить свою учетную запись. Но в комментарии есть свой плакат FK, указывающий на UserB. Поэтому, вместо того, чтобы удалять UserB, я хочу деактивировать его учетную запись, но сохраните запись, чтобы не нарушать зависимости. И я хочу расширить эту логику до каждой таблицы в базе данных. Это неправильно?
Таким образом, вы хотите избежать проверки нуля, чтобы вместо этого проверить свойство записи, чтобы убедиться, что она активна, что удовлетворяет нулевой проверке, потому что вам не нравится ссылочная целостность? –
Если вы планируете использовать булевский столбец, вам следует планировать его проверку. –
@DarkBobG Нет, я не хочу физически удалять записи из базы данных, просто удаляйте их. Но в то же время принудительно применяйте какую-либо ссылочную целостность в отношении этого статуса удаления. Это должно быть сделано в приложении, но мне интересно, может ли быть автоматическое решение. –