Browse Source

add main commit

Robert 1 year ago
parent
commit
fe1e215481
1 changed files with 23 additions and 12 deletions
  1. 23 12
      EVCB_OCPP.WSServer/Jobs/HeartBeatCheckJob.cs

+ 23 - 12
EVCB_OCPP.WSServer/Jobs/HeartBeatCheckJob.cs

@@ -44,25 +44,36 @@ public class HeartBeatCheckJob : IJob
             watch.Start();
 
             using (var db = maindbContextFactory.CreateDbContext())
+            using (var transaction = db.Database.BeginTransaction())
             {
-                foreach (var session in clients)
+                try
                 {
-                    var machine = new Machine() { Id = session.MachineId };
-                    if (machine != null)
+                    foreach (var session in clients)
                     {
-                        //db.Configuration.AutoDetectChangesEnabled = false;
-                        //db.Configuration.ValidateOnSaveEnabled = false;
-                        db.Machine.Attach(machine);
-                        machine.HeartbeatUpdatedOn = DateTime.UtcNow;
-                        machine.ConnectionType = session.UriScheme.Equals("wss") ? 2 : 1;
-                        db.Entry(machine).Property(x => x.HeartbeatUpdatedOn).IsModified = true;
-                        db.Entry(machine).Property(x => x.ConnectionType).IsModified = true;
-                        db.SaveChanges();
-                        db.ChangeTracker.Clear();
+                        var machine = new Machine() { Id = session.MachineId };
+                        if (machine != null)
+                        {
+                            //db.Configuration.AutoDetectChangesEnabled = false;
+                            //db.Configuration.ValidateOnSaveEnabled = false;
+                            db.Machine.Attach(machine);
+                            machine.HeartbeatUpdatedOn = DateTime.UtcNow;
+                            machine.ConnectionType = session.UriScheme.Equals("wss") ? 2 : 1;
+                            db.Entry(machine).Property(x => x.HeartbeatUpdatedOn).IsModified = true;
+                            db.Entry(machine).Property(x => x.ConnectionType).IsModified = true;
+                            //db.SaveChanges();
+                            db.SaveChanges();
+                            transaction.Commit();
+                            db.ChangeTracker.Clear();
+                        }
                     }
                 }
+                catch (Exception ex)
+                {
+                    transaction.Rollback();
+                }
             }
 
+
             watch.Stop();
             if (watch.ElapsedMilliseconds / 1000 > 5)
             {