diff --git a/CC.Yi.DALFactory/DbSession.cs b/CC.Yi.DALFactory/DbSession.cs index 71b38475..b6de042d 100644 --- a/CC.Yi.DALFactory/DbSession.cs +++ b/CC.Yi.DALFactory/DbSession.cs @@ -10,7 +10,31 @@ namespace CC.Yi.DALFactory { public int SaveChanges() { - return DbContentFactory.GetCurrentDbContent().SaveChanges(); + var context = DbContentFactory.GetCurrentDbContent(); + + var saved = false; + while (!saved) + { + try + { + // Attempt to save changes to the database + context.SaveChanges(); + saved = true; + } + catch (DbUpdateConcurrencyException ex) + { + foreach (var entry in ex.Entries) + { + var databaseValues = entry.GetDatabaseValues(); + + // Refresh original values to bypass next concurrency check + entry.OriginalValues.SetValues(databaseValues); + + } + } + } + + return 1; } public DataContext GetDbContent() {