示例#1
0
 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;
         }
     }
 }
示例#2
0
 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;
         }
     }
 }