private void GetCurrrentSessionInfo(Session session, DbUpdateConcurrencyException e) { foreach (var entry in e.Entries) { if (entry.Entity is Session conflictedSession) { var databaseEntity = Sessions.AsNoTracking().Single(p => p.Id == conflictedSession.Id); var databaseEntry = Entry(databaseEntity); var databaseValue = databaseEntry.Property(nameof(Session.TokenCount)).CurrentValue; entry.Property(nameof(Session.TokenCount)).CurrentValue = databaseEntry.Property(nameof(Session.TokenCount)).CurrentValue; entry.Property(nameof(Session.TokenCount)).OriginalValue = databaseEntry.Property(nameof(Session.TokenCount)).CurrentValue; session.TokenCount = (int)databaseEntry.Property(nameof(Session.TokenCount)).CurrentValue; } } }
private void GetNewTokenNumber(Session session, Token token, DbUpdateConcurrencyException e) { foreach (var entry in e.Entries) { if (entry.Entity is Session conflictedSession) { var databaseEntity = Sessions.AsNoTracking().Single(p => p.Id == conflictedSession.Id); var databaseEntry = Entry(databaseEntity); var proposedValue = entry.Property(nameof(Session.TokenCount)).CurrentValue; var originalValue = entry.Property(nameof(Session.TokenCount)).OriginalValue; var databaseValue = databaseEntry.Property(nameof(Session.TokenCount)).CurrentValue; Console.WriteLine($"Conflict =>Proposed {proposedValue} Orginal {originalValue} DB {databaseValue}"); var newTokenNumber = ((int)entry.Property(nameof(Session.TokenCount)).CurrentValue) + 1; entry.Property(nameof(Session.TokenCount)).CurrentValue = newTokenNumber; entry.Property(nameof(Session.TokenCount)).OriginalValue = newTokenNumber - 1; session.TokenCount = newTokenNumber; token.Number = newTokenNumber; } } }