Soft Deletes (IsHistorical столбец) с EntityFramework

Я работаю с базой данных, в которой дизайнеры решили пометить каждую таблицу столбцом IsHistorical. Не нужно учитывать правильное моделирование, и я никак не могу изменить схему.

Это вызывает некоторые трения при разработке экранов CRUD, которые взаимодействуют со свойствами навигации. Я не могу просто взять Продукт и затем отредактировать его EntityCollection. Я должен вручную написать IsHistorical проверки повсюду, и это сводит меня с ума.

Дополнения также ужасны, потому что пока яМы написали все ручные проверки, чтобы убедиться, что дополнение просто мягко удалено, поэтому вместо добавления дублирующего объекта я могу просто переключить IsHistoric.

Три варианта ясчитаются:

Модификация шаблонов t4 для включения проверок и синхронизации IsHistorical.

Перехватывать удаления и добавления в ObjectContext, переключать столбец IsHistorical, а затем синхронизировать состояние объекта.

Подпишитесь на событие AssociationChanged и переключите туда колонку IsHistorical.

Кто-нибудь имеет какой-либо опыт с этим или может порекомендовать самый безболезненный подход?

Замечания: Да, я знаю, это плохое моделирование. Я'Вы читали те же статьи о программном удалении, что и у вас. Воняет, я должен иметь дело с этим требованием, но я делаю. Я просто хочу самый безболезненный метод работы с программным удалением без написания одного и того же кода для каждого свойства навигации в моей базе данных.

Заметка 2 LukeLed»Ответ технически верен, хотя вынуждает вас к действительно плохому ORM, без графов. Проблема заключается в том, что теперь ям необходимо вырвать все "удален» объекты из графа, а затем вызвать метод Delete для каждого из них. Это действительно не спасет меня так много ручного церемониального кодирования. Вместо того, чтобы писать ручные проверки IsHistoric, теперь яЯ собираю удаленные объекты и перебираю их.

Ответы на вопрос(3)

Ваш ответ на вопрос