From daffe5c0826edb3ce222a93f31d9fee31475a80f Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Fri, 5 Mar 2021 23:31:59 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BF=AE=E5=A4=8D=20Repository/DbContext?= =?UTF-8?q?=20=E6=89=B9=E9=87=8F=E4=BF=AE=E6=94=B9=E5=8F=AF=E8=83=BD?= =?UTF-8?q?=E6=97=A0=E6=95=88=E7=9A=84=20bug=EF=BC=9B#709?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FreeSql.DbContext/DbContext/DbContextAsync.cs | 17 +++++++++++++++-- FreeSql.DbContext/DbContext/DbContextSync.cs | 17 +++++++++++++++-- 2 files changed, 30 insertions(+), 4 deletions(-) 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;