Entity Framework - Пометка сущности как неактивной, если ссылка на целостность останавливает удаление записи - PullRequest
0 голосов
/ 27 марта 2012

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

Код, который у меня естьis:

    public ActionResult Delete(int id)
    {
        try
        {
            Service.Repository<TEntity>().Delete(id);
            Service.SaveChanges(this.CurrentUser);
            return this.RedirectToActionPermanent("Index");
        }
        catch (DbUpdateException)
        {
            Service.Repository<TEntity>().D

            // Could not delete due to referential integrity so mark as inactive
            var obj = Service.Repository<TEntity>().Find(id);
            obj.Inactive = true;

            // Error thrown here as obj is already marked as deleted
            Service.SaveChanges(this.CurrentUser);

            return this.RedirectToActionPermanent("Index");
        }
    }

Проблема, с которой я столкнулся, заключается в том, что после запуска кода в DbUpdateException и последующего выполнения save возникает другое исключение, так как объект по-прежнему помечается как «удаленный».Каков наилучший способ удаления исходного действия удаления из сущности, чтобы я мог снова попробовать сохранить?

  • Править Я хотел сказать, что видел, что многие люди заявляли, что я должен избавиться от существующегоконтекст и получить новый.Мне это кажется немного неправильным в этом контексте, так как я добавляю контекст при каждом запросе Http через Unity.

Спасибо

1 Ответ

0 голосов
/ 27 марта 2012

Вы можете обновить сущность из базы данных, а затем изменить ее снова.Вы должны добавить метод к вашему хранилищу в вашем случае.

context.Refresh(RefreshMode.StoreWins, object);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...