Как переопределить DeleteObject в Entity Framework - PullRequest
1 голос
/ 15 сентября 2011

Привет, я совершенно новичок в EF, и мне трудно разобраться, но вот сценарий. Я создал проект и добавил диаграмму edmx, которую я использовал для генерации моделей из предварительно созданной базы данных SQL. Эта диаграмма Дама сгенерировала код для каждой модели и контекст для меня. контекст выглядит примерно так:

public partial class BuzzEntities : ObjectContext
{
    public ObjectSet<Case> Cases
    {
        get
        {
            if ((_Cases == null))
            {
                _Cases = base.CreateObjectSet<Case>("Cases");
            }
            return _Cases;
        }
    }

Хорошо, пока это позволяет мне делать такие вещи, как

private Buzz.BuzzEntities db = new BuzzEntities();
db.Cases.DeleteObject(someCase);

, который удалит someCase из базы данных. Однако я хотел бы переопределить метод delete, чтобы вместо удаления объекта он помечал свойство объекта как удаленное. то есть someCase.Delete = true; Следующая часть системы должна запретить системе загружать случаи с удаленным = true. По сути, я не хочу, чтобы запись когда-либо удалялась, просто скрытая от системы.

Какой лучший способ добиться этого? Я знаю, что мог бы вручную изменить поле и просто сохранить запись вместо вызова удаления объекта, но я не хочу беспокоиться об установке или скрытии записей в моем пользовательском интерфейсе. Я хочу, чтобы фреймовая обработка обрабатывала это для меня.

Ответы [ 2 ]

1 голос
/ 15 сентября 2011

В дополнение к опциям, которые предлагает @Ladislav, вы также можете создать триггер INSTEAD OF DELETE для своей таблицы, который повторно отображает удаление на уровне сервера БД, или с помощью SavingChanges для изменения состоянияобъекта .

0 голосов
/ 15 сентября 2011

Вы не можете отменить операцию удаления. Вы можете создать пользовательскую хранимую процедуру и сопоставить ее с операцией удаления вашей сущности. Вторая часть вашей проблемы может быть достигнута с помощью условного отображения , где будут использоваться только объекты с удаленным! = True.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...