Есть ли способ получить все сущности внутри метода SaveChanges в Entity Framework - PullRequest
0 голосов
/ 26 января 2012
  1. Я пытаюсь пометить объекты для удаления.
  2. Я переопределил метод Savechnages и хочу получить все объекты независимо от их состояния. Приведенный ниже код взят с сайта, проблема в том, что объекты, свойства которых не были изменены и просто помечены для удаления, не отображаются.

    public override int SaveChanges(SaveOptions options)
    {
        var deletedEntities = __getDeletedEntities();
        _softDelete(deletedEntities);
        return base.SaveChanges(options);
    }
    
    private List<ISoftDelete> __getDeletedEntities()
    {
    
       return ObjectStateManager
                 .GetObjectStateEntries(EntityState.Unchanged)
                        .Select(entry => entry.Entity)
                        .OfType<ISoftDelete>()
                        .Where(e => e.IsDeleted)
                        .ToList();
    

    }

В: Есть ли другой способ, кроме использования GetObjectStateEntries, чтобы получить все сущности независимо от состояния?

1 Ответ

1 голос
/ 26 января 2012

EntityState - это перечисление флагов, которое означает, что вы можете объединить несколько значений при вызове GetObjectStateEntries следующим образом:

ObjectStateManager.GetObjectStateEntries(EntityState.Unchanged | EntityState.Deleted)

С другой стороны, поскольку удаленные объекты уже помечены как удаленные, они будут отправлены вБаза данных в любом случае для удаления, поэтому я не уверен, что вы собираетесь с ними делать.

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