Je suis en train de concevoir un système d'inventaire avec Entity Framework et SQL Server. Cette application sera utilisée par des milliers d'users. Comment puis-je concevoir une application / database qui permettra aux users de mettre à jour les mêmes données d'inventaire en même time? Pour l'instant, par souci de cohérence, j'utilise le versioning des lignes, mais cela provoque souvent des erreurs de "mise à jour des conflits".
En savoir plus sur Retry Pattern ( voici mon article à ce sujet). Avec lui, vous pouvez détecter les conflits et faire une dessicion quoi faire (réécrire, merge ou jeter l'erreur à l'user).
Exemple d'utilisation:
var retryCount = 3; var currentRetry = 0; using (var context = new DbContext(ConnectionSsortingng)) { var user = context.Set<User>().First(o => o.Id == 1); user.Login = "newuserlogin"; do { try { currentRetry++; context.SaveChanges(); break; } catch (DbUpdateConcurrencyException ex) when (currentRetry <= retryCount) { //conflict detected var entry = ex.Ensortinges.Single(); //rewrite values from database entry.OriginalValues.SetValues(entry.GetDatabaseValues()); } } while (true); }