Я использую первый подход EF 5 Database в моем приложении MVC. все мои таблицы используют поле «Удалено», которое является логическим полем для отметки записи, удаляется.EF 5 Условное сопоставление
Я пытаюсь избавиться от необходимости проверять Deleted == false каждый раз, когда я запрашиваю свою базу данных. Очень простой способ сделать это - использовать условное отображение в файле edmx, где EF всегда возвращает данные, которые не удаляются. Это все хорошо.
Но проблема выполнения этого соответствия условий заключается в том, что, когда я хочу разрешить пользователю удалять какую-либо запись, например Адрес из своей адресной книги, у меня нет доступа к полю Delete из EF, поскольку я использовал его в условное отображение, и поэтому я должен искать другой вариант, позволяющий пользователю удалять запись.
Как я думал, это создать хранимую процедуру, обрабатывающую запрос удаления, и вызвать его, когда я хочу удалить запись.
Есть ли лучший способ сделать это? Можно ли сделать поле «Удалить» доступным, даже если оно используется в условном сопоставлении?
+1 Очень хорошее решение. –
Это слово, которое я искал, «Мягкое удаление». Да, это кажется хорошим решением для кода. Скорее всего, я собираюсь создать динамический запрос в сохраненном proc и использовать сопоставление хранимых процедур в edmx и сопоставить хранимую процедуру, которую я создаю для Delete. Поэтому, когда я вызываю «Удалить» в контексте, он будет вызывать автоматическую картографию «Удалить хранимую процедуру». – Amila
Впечатляющий, после поиска рабочего решения, я только что нашел его. Были некоторые незначительные проблемы при работе с 'GetTableName', версия, которую вы опубликовали в другой статье, нуждается в небольших доработках даже для компиляции. Но это не меняет того факта, что, действительно, этот подход с мягким удалением работает как шарм. –