When handling several potential exceptions during a context.SaveChanges()
one of the exceptions is OptimisticConcurrency
. Microsoft's documentation on this at http://msdn.microsoft.com/en-us/library/bb399228.aspx discusses this for 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");
}
... but on EF 5.0 (RC), this doesn't seem to work because Refresh()
doesn't exist on my EF5, code-first, DbContext derived context
class.
I do see context.Entry(context.SalesOrderHeaders).Reload();
- but that appears to be a straightup reload-from-db and not a refresh/merge (with policy client wins).
Any ideas how to handle Optimistic concurrency exceptions in EF5? Actually even general pointers on exception handling in SaveChanges() would be nice
Thanks