mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 01:05:27 +08:00 
			
		
		
		
	- 修复 Repository/DbContext 批量修改可能无效的 bug;#709
This commit is contained in:
		@@ -28,6 +28,7 @@ namespace FreeSql
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            PrevCommandInfo oldinfo = null;
 | 
					            PrevCommandInfo oldinfo = null;
 | 
				
			||||||
            var states = new List<object>();
 | 
					            var states = new List<object>();
 | 
				
			||||||
 | 
					            var flagFuncUpdateLaststate = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            Task<int> dbsetBatch(string method)
 | 
					            Task<int> dbsetBatch(string method)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
@@ -77,7 +78,11 @@ namespace FreeSql
 | 
				
			|||||||
                { //没有执行更新
 | 
					                { //没有执行更新
 | 
				
			||||||
                    var laststate = states[states.Count - 1];
 | 
					                    var laststate = states[states.Count - 1];
 | 
				
			||||||
                    states.Clear();
 | 
					                    states.Clear();
 | 
				
			||||||
                    if (affrows == -997) states.Add(laststate); //保留最后一个
 | 
					                    if (affrows == -997)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        flagFuncUpdateLaststate = true;
 | 
				
			||||||
 | 
					                        states.Add(laststate); //保留最后一个
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                if (affrows > 0)
 | 
					                if (affrows > 0)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
@@ -85,7 +90,11 @@ namespace FreeSql
 | 
				
			|||||||
                    var islastNotUpdated = states.Count != affrows;
 | 
					                    var islastNotUpdated = states.Count != affrows;
 | 
				
			||||||
                    var laststate = states[states.Count - 1];
 | 
					                    var laststate = states[states.Count - 1];
 | 
				
			||||||
                    states.Clear();
 | 
					                    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;
 | 
					                var info = _prevCommands.Any() ? _prevCommands.Dequeue() : null;
 | 
				
			||||||
                if (oldinfo == null) oldinfo = info;
 | 
					                if (oldinfo == null) oldinfo = info;
 | 
				
			||||||
                var isLiveUpdate = false;
 | 
					                var isLiveUpdate = false;
 | 
				
			||||||
 | 
					                flagFuncUpdateLaststate = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (_prevCommands.Any() == false && states.Any() ||
 | 
					                if (_prevCommands.Any() == false && states.Any() ||
 | 
				
			||||||
                    info != null && oldinfo.changeType != info.changeType ||
 | 
					                    info != null && oldinfo.changeType != info.changeType ||
 | 
				
			||||||
@@ -130,6 +140,9 @@ namespace FreeSql
 | 
				
			|||||||
                {
 | 
					                {
 | 
				
			||||||
                    states.Add(info.state);
 | 
					                    states.Add(info.state);
 | 
				
			||||||
                    oldinfo = info;
 | 
					                    oldinfo = info;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if (flagFuncUpdateLaststate && oldinfo.changeType == EntityChangeType.Update) //马上与上个元素比较
 | 
				
			||||||
 | 
					                        await funcUpdate(isLiveUpdate);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            isFlushCommanding = false;
 | 
					            isFlushCommanding = false;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -44,6 +44,7 @@ namespace FreeSql
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            PrevCommandInfo oldinfo = null;
 | 
					            PrevCommandInfo oldinfo = null;
 | 
				
			||||||
            var states = new List<object>();
 | 
					            var states = new List<object>();
 | 
				
			||||||
 | 
					            var flagFuncUpdateLaststate = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            int dbsetBatch(string method)
 | 
					            int dbsetBatch(string method)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
@@ -92,7 +93,11 @@ namespace FreeSql
 | 
				
			|||||||
                { //没有执行更新
 | 
					                { //没有执行更新
 | 
				
			||||||
                    var laststate = states[states.Count - 1];
 | 
					                    var laststate = states[states.Count - 1];
 | 
				
			||||||
                    states.Clear();
 | 
					                    states.Clear();
 | 
				
			||||||
                    if (affrows == -997) states.Add(laststate); //保留最后一个
 | 
					                    if (affrows == -997)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        flagFuncUpdateLaststate = true;
 | 
				
			||||||
 | 
					                        states.Add(laststate); //保留最后一个
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                if (affrows > 0)
 | 
					                if (affrows > 0)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
@@ -100,7 +105,11 @@ namespace FreeSql
 | 
				
			|||||||
                    var islastNotUpdated = states.Count != affrows;
 | 
					                    var islastNotUpdated = states.Count != affrows;
 | 
				
			||||||
                    var laststate = states[states.Count - 1];
 | 
					                    var laststate = states[states.Count - 1];
 | 
				
			||||||
                    states.Clear();
 | 
					                    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;
 | 
					                var info = _prevCommands.Any() ? _prevCommands.Dequeue() : null;
 | 
				
			||||||
                if (oldinfo == null) oldinfo = info;
 | 
					                if (oldinfo == null) oldinfo = info;
 | 
				
			||||||
                var isLiveUpdate = false;
 | 
					                var isLiveUpdate = false;
 | 
				
			||||||
 | 
					                flagFuncUpdateLaststate = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (_prevCommands.Any() == false && states.Any() ||
 | 
					                if (_prevCommands.Any() == false && states.Any() ||
 | 
				
			||||||
                    info != null && oldinfo.changeType != info.changeType ||
 | 
					                    info != null && oldinfo.changeType != info.changeType ||
 | 
				
			||||||
@@ -145,6 +155,9 @@ namespace FreeSql
 | 
				
			|||||||
                {
 | 
					                {
 | 
				
			||||||
                    states.Add(info.state);
 | 
					                    states.Add(info.state);
 | 
				
			||||||
                    oldinfo = info;
 | 
					                    oldinfo = info;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if (flagFuncUpdateLaststate && oldinfo.changeType == EntityChangeType.Update) //马上与上个元素比较
 | 
				
			||||||
 | 
					                        funcUpdate(isLiveUpdate);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            isFlushCommanding = false;
 | 
					            isFlushCommanding = false;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user