Lorsque l'on traite plusieurs exceptions potentielles au cours d'une context.SaveChanges()
l'une des exceptions est OptimisticConcurrency
. La documentation de Microsoft à ce sujet se trouve à l'adresse http://msdn.microsoft.com/en-us/library/bb399228.aspx discute de cela pour 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");
}
... mais avec EF 5.0 (RC), cela ne semble pas fonctionner car Refresh()
n'existe pas sur mon EF5, code-first, dérivé de DbContext context
classe.
Je vois. context.Entry(context.SalesOrderHeaders).Reload();
- mais il semble qu'il s'agisse d'un simple rechargement de la base de données et non d'un rafraîchissement ou d'une fusion (avec des gains de politique client).
Une idée sur la façon de gérer les exceptions de concurrence optimiste dans EF5 ? En fait, même des indications générales sur la gestion des exceptions dans SaveChanges() seraient les bienvenues.
Gracias