Como posso ignorar uma DbUpdateConcurrencyException com meu código do Entity Framework?

Existe alguma maneira de dizer à EF para não se preocupar com o número de linhas que umDELETE ouUPDATE faz ou não faz?

Estou tentando excluir uma linha do banco de dados, mas como a linha não existe, o EF lança uma exceção:DbUpdateConcurrencyException .. dizendo0 linhas foram afetadas. Isso mesmo -> nenhuma linha foi excluída. Mas tudo bem .. porque não há dados.

Eu realmente não quero fazer uma viagem de ida e volta para o banco de dados para ver se essa linha existe .. e se houver .. e tente excluí-la.

Se eu tentar engolir a exceção em umtry / catch bloco, o restante dos itens a serem excluídos NÃO é enviado para o banco de dados, quando tentoSaveChanges() ... o que é ruim.

por exemplo.

Delete(new Foo(1));
Delete(new Foo(2));
Delete(new Foo(3));
SaveChanges(); // <-- Throws the exception.

// DB Trace : DELETE FROM Foo WHERE Id = 1;

e é isso .. não há rastreamento mostrando o registro 2 ou 3 tentando ser excluído .. porque a exceção para tudo :(

Alguma ideia?

ATUALIZAR

ComoDelete trabalhos? Aqui está o código ... (simplificado e fortemente tipado)

public void Delete(Foo foo)
{
    if (foo == null)
    {
        throw new ArgumentNullException("foo");
    }

    Foo attachedEntity = Context.Set<Foo>().Local.FirstOrDefault(x => x.Id > 0);

    if (attachedEntity != null)
    {
        // Entity already in object graph - remove entity.
        Context.Set<Foo>().Remove(attachedEntity);
    }
    else
    {
        // Entity not in object graph, attach and set EntityState to Deleted.
        Context.Entry(foo).State = EntityState.Deleted;
    }
}

questionAnswers(2)

yourAnswerToTheQuestion