При обработке нескольких потенциальных исключений во время context.SaveChanges()
одно из исключений - OptimisticConcurrency
. Документация Microsoft по этому вопросу в http://msdn.microsoft.com/en-us/library/bb399228.aspx обсуждает это для EF 4.x...
try
{
// Try to save changes, which may cause a conflict.
int num = context.SaveChanges();
Console.WriteLine("No conflicts. " +
num.ToString() + " updates saved.");
}
catch (OptimisticConcurrencyException)
{
// Resolve the concurrency conflict by refreshing the
// object context before re-saving changes.
context.Refresh(RefreshMode.ClientWins, orders);
// Save changes.
context.SaveChanges();
Console.WriteLine("OptimisticConcurrencyException "
+ "handled and changes saved");
}
... но в EF 5.0 (RC) это не работает, потому что Refresh()
не существует в моем EF5, в коде, в основе DbContext context
.
Я вижу context.Entry(context.SalesOrderHeaders).Reload();
- но это похоже на перезагрузку-из-db, а не обновление/слияние (с выигрышами в политическом клиенте).
Любые идеи, как обрабатывать оптимистичные исключения concurrency в EF5? Фактически даже общие указатели на обработку исключений в SaveChanges() были бы хороши
Спасибо