diff --git a/FreeSql.DbContext/DbContext/DbContextAsync.cs b/FreeSql.DbContext/DbContext/DbContextAsync.cs index 1915e5f0..61736375 100644 --- a/FreeSql.DbContext/DbContext/DbContextAsync.cs +++ b/FreeSql.DbContext/DbContext/DbContextAsync.cs @@ -28,6 +28,7 @@ namespace FreeSql PrevCommandInfo oldinfo = null; var states = new List(); + var flagFuncUpdateLaststate = false; Task dbsetBatch(string method) { @@ -77,7 +78,11 @@ namespace FreeSql { //没有执行更新 var laststate = states[states.Count - 1]; states.Clear(); - if (affrows == -997) states.Add(laststate); //保留最后一个 + if (affrows == -997) + { + flagFuncUpdateLaststate = true; + states.Add(laststate); //保留最后一个 + } } if (affrows > 0) { @@ -85,7 +90,11 @@ namespace FreeSql var islastNotUpdated = states.Count != affrows; var laststate = states[states.Count - 1]; states.Clear(); - if (islastNotUpdated) states.Add(laststate); //保留最后一个 + if (islastNotUpdated) + { + flagFuncUpdateLaststate = true; + states.Add(laststate); //保留最后一个 + } } }; @@ -94,6 +103,7 @@ namespace FreeSql var info = _prevCommands.Any() ? _prevCommands.Dequeue() : null; if (oldinfo == null) oldinfo = info; var isLiveUpdate = false; + flagFuncUpdateLaststate = false; if (_prevCommands.Any() == false && states.Any() || info != null && oldinfo.changeType != info.changeType || @@ -130,6 +140,9 @@ namespace FreeSql { states.Add(info.state); oldinfo = info; + + if (flagFuncUpdateLaststate && oldinfo.changeType == EntityChangeType.Update) //马上与上个元素比较 + await funcUpdate(isLiveUpdate); } } isFlushCommanding = false; diff --git a/FreeSql.DbContext/DbContext/DbContextSync.cs b/FreeSql.DbContext/DbContext/DbContextSync.cs index d6ad896d..1591af90 100644 --- a/FreeSql.DbContext/DbContext/DbContextSync.cs +++ b/FreeSql.DbContext/DbContext/DbContextSync.cs @@ -44,6 +44,7 @@ namespace FreeSql PrevCommandInfo oldinfo = null; var states = new List(); + var flagFuncUpdateLaststate = false; int dbsetBatch(string method) { @@ -92,7 +93,11 @@ namespace FreeSql { //没有执行更新 var laststate = states[states.Count - 1]; states.Clear(); - if (affrows == -997) states.Add(laststate); //保留最后一个 + if (affrows == -997) + { + flagFuncUpdateLaststate = true; + states.Add(laststate); //保留最后一个 + } } if (affrows > 0) { @@ -100,7 +105,11 @@ namespace FreeSql var islastNotUpdated = states.Count != affrows; var laststate = states[states.Count - 1]; states.Clear(); - if (islastNotUpdated) states.Add(laststate); //保留最后一个 + if (islastNotUpdated) + { + flagFuncUpdateLaststate = true; + states.Add(laststate); //保留最后一个 + } } }; @@ -109,6 +118,7 @@ namespace FreeSql var info = _prevCommands.Any() ? _prevCommands.Dequeue() : null; if (oldinfo == null) oldinfo = info; var isLiveUpdate = false; + flagFuncUpdateLaststate = false; if (_prevCommands.Any() == false && states.Any() || info != null && oldinfo.changeType != info.changeType || @@ -145,6 +155,9 @@ namespace FreeSql { states.Add(info.state); oldinfo = info; + + if (flagFuncUpdateLaststate && oldinfo.changeType == EntityChangeType.Update) //马上与上个元素比较 + funcUpdate(isLiveUpdate); } } isFlushCommanding = false;