2012-06-08 6 views
0

В Entity Framework Code-First, если метод SaveChanges терпит неудачу, потому что он пытается обновить запись, которую пользователь просто удалил на другой машине, как я могу сказать EF, чтобы вставить запись вместо обновления Это?Entity Framework Code-First параллелизм при удалении

ответ

0

Одним из решений (возможно, не лучшим) является включение кода, который вызывает SaveChanges() внутри блока try/catch. Если возникает исключение, проверьте, была ли эта запись удалена и задано состояние объекта EntityState.Added и снова вызовите SaveChanges.

+0

Как проверить, удалена ли запись? Должен ли я делать это для каждой записи в контексте «транзакции»? –

+0

Я предполагал, что вы пытались обновить одну запись. Возможно, лучший способ справиться с этим сценарием - отметить запись как удаленную (с помощью мягкого удаления), а при обновлении всегда отмечайте delete = false. –

+0

Я думал об этой альтернативе, но это поднимает меня еще больше проблем, мне придется изменить все запросы и включить еще одно предложение Where, я ожидал другого решения. Спасибо, в любом случае :) –