, затем удалил сущность во втором контексте и сохранил, затем сохранил в первом, но выдает исключение.

ли способ, которым я могу сказать EF не беспокоиться о количестве строк вDELETE или жеUPDATE делать или не делать?

Я пытаюсь удалить строку из базы данных, но поскольку строка не существует, EF выдает исключение:DbUpdateConcurrencyException .. говоряЗатронуто 0 строк, Это правильно -> строки не были удалены. Но это совершенно нормально .. потому что нет данных.

Я действительно не хочу делать обход в БД, чтобы увидеть, существует ли эта строка ... и если да ... то попробуйте и удалите ее.

Если я попытаюсь проглотить исключение вtry / catch блокировать, тогда остальные элементы, которые будут удалены, НЕ отправляются в БД, когда я пытаюсьSaveChanges() ... что плохо

например.

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

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

и это все .. нет никаких следов, показывающих запись 2 или 3, пытающуюся удалить .. потому что исключение останавливает все :(

Есть идеи?

ОБНОВИТЬ

КакDelete работай? Вот код ... (упрощенный и строго типизированный)

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;
    }
}

Ответы на вопрос(2)

Ваш ответ на вопрос