diff --git a/FreeSql.DbContext/DbContext/DbContextAsync.cs b/FreeSql.DbContext/DbContext/DbContextAsync.cs
index af4717b7..811ecfe7 100644
--- a/FreeSql.DbContext/DbContext/DbContextAsync.cs
+++ b/FreeSql.DbContext/DbContext/DbContextAsync.cs
@@ -98,58 +98,64 @@ namespace FreeSql
}
};
- while (_prevCommands.Any() || states.Any())
+ try
{
- 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 ||
- info != null && oldinfo.stateType != info.stateType ||
- info != null && oldinfo.entityType != info.entityType)
+ while (_prevCommands.Any() || states.Any())
{
+ var info = _prevCommands.Any() ? _prevCommands.Dequeue() : null;
+ if (oldinfo == null) oldinfo = info;
+ var isLiveUpdate = false;
+ flagFuncUpdateLaststate = false;
- if (info != null && oldinfo.changeType == info.changeType && oldinfo.stateType == info.stateType && oldinfo.entityType == info.entityType)
+ if (_prevCommands.Any() == false && states.Any() ||
+ info != null && oldinfo.changeType != info.changeType ||
+ info != null && oldinfo.stateType != info.stateType ||
+ info != null && oldinfo.entityType != info.entityType)
+ {
+
+ if (info != null && oldinfo.changeType == info.changeType && oldinfo.stateType == info.stateType && oldinfo.entityType == info.entityType)
+ {
+ //最后一个,合起来发送
+ states.Add(info.state);
+ info = null;
+ }
+
+ switch (oldinfo.changeType)
+ {
+ case EntityChangeType.Insert:
+ await funcInsert();
+ break;
+ case EntityChangeType.Delete:
+ await funcDelete();
+ break;
+ }
+ isLiveUpdate = true;
+ }
+
+ if (isLiveUpdate || oldinfo.changeType == EntityChangeType.Update)
+ {
+ if (states.Any())
+ {
+ await funcUpdate(isLiveUpdate);
+ if (info?.changeType == EntityChangeType.Update)
+ flagFuncUpdateLaststate = true;
+ }
+ }
+
+ if (info != null)
{
- //最后一个,合起来发送
states.Add(info.state);
- info = null;
+ oldinfo = info;
+
+ if (flagFuncUpdateLaststate && oldinfo.changeType == EntityChangeType.Update) //马上与上个元素比较
+ await funcUpdate(isLiveUpdate);
}
-
- switch (oldinfo.changeType)
- {
- case EntityChangeType.Insert:
- await funcInsert();
- break;
- case EntityChangeType.Delete:
- await funcDelete();
- break;
- }
- isLiveUpdate = true;
- }
-
- if (isLiveUpdate || oldinfo.changeType == EntityChangeType.Update)
- {
- if (states.Any())
- {
- await funcUpdate(isLiveUpdate);
- if (info?.changeType == EntityChangeType.Update)
- flagFuncUpdateLaststate = true;
- }
- }
-
- if (info != null)
- {
- states.Add(info.state);
- oldinfo = info;
-
- if (flagFuncUpdateLaststate && oldinfo.changeType == EntityChangeType.Update) //马上与上个元素比较
- await funcUpdate(isLiveUpdate);
}
}
- isFlushCommanding = false;
+ finally
+ {
+ isFlushCommanding = false;
+ }
}
}
}
diff --git a/FreeSql.DbContext/DbContext/DbContextSync.cs b/FreeSql.DbContext/DbContext/DbContextSync.cs
index e5aad882..7b4fde35 100644
--- a/FreeSql.DbContext/DbContext/DbContextSync.cs
+++ b/FreeSql.DbContext/DbContext/DbContextSync.cs
@@ -113,58 +113,64 @@ namespace FreeSql
}
};
- while (_prevCommands.Any() || states.Any())
+ try
{
- 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 ||
- info != null && oldinfo.stateType != info.stateType ||
- info != null && oldinfo.entityType != info.entityType)
+ while (_prevCommands.Any() || states.Any())
{
+ var info = _prevCommands.Any() ? _prevCommands.Dequeue() : null;
+ if (oldinfo == null) oldinfo = info;
+ var isLiveUpdate = false;
+ flagFuncUpdateLaststate = false;
- if (info != null && oldinfo.changeType == info.changeType && oldinfo.stateType == info.stateType && oldinfo.entityType == info.entityType)
+ if (_prevCommands.Any() == false && states.Any() ||
+ info != null && oldinfo.changeType != info.changeType ||
+ info != null && oldinfo.stateType != info.stateType ||
+ info != null && oldinfo.entityType != info.entityType)
+ {
+
+ if (info != null && oldinfo.changeType == info.changeType && oldinfo.stateType == info.stateType && oldinfo.entityType == info.entityType)
+ {
+ //最后一个,合起来发送
+ states.Add(info.state);
+ info = null;
+ }
+
+ switch (oldinfo.changeType)
+ {
+ case EntityChangeType.Insert:
+ funcInsert();
+ break;
+ case EntityChangeType.Delete:
+ funcDelete();
+ break;
+ }
+ isLiveUpdate = true;
+ }
+
+ if (isLiveUpdate || oldinfo.changeType == EntityChangeType.Update)
+ {
+ if (states.Any())
+ {
+ funcUpdate(isLiveUpdate);
+ if (info?.changeType == EntityChangeType.Update)
+ flagFuncUpdateLaststate = true;
+ }
+ }
+
+ if (info != null)
{
- //最后一个,合起来发送
states.Add(info.state);
- info = null;
+ oldinfo = info;
+
+ if (flagFuncUpdateLaststate && oldinfo.changeType == EntityChangeType.Update) //马上与上个元素比较
+ funcUpdate(isLiveUpdate);
}
-
- switch (oldinfo.changeType)
- {
- case EntityChangeType.Insert:
- funcInsert();
- break;
- case EntityChangeType.Delete:
- funcDelete();
- break;
- }
- isLiveUpdate = true;
- }
-
- if (isLiveUpdate || oldinfo.changeType == EntityChangeType.Update)
- {
- if (states.Any())
- {
- funcUpdate(isLiveUpdate);
- if (info?.changeType == EntityChangeType.Update)
- flagFuncUpdateLaststate = true;
- }
- }
-
- if (info != null)
- {
- states.Add(info.state);
- oldinfo = info;
-
- if (flagFuncUpdateLaststate && oldinfo.changeType == EntityChangeType.Update) //马上与上个元素比较
- funcUpdate(isLiveUpdate);
}
}
- isFlushCommanding = false;
+ finally
+ {
+ isFlushCommanding = false;
+ }
}
}
}
diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml
index 537315e2..6ca84f12 100644
--- a/FreeSql.DbContext/FreeSql.DbContext.xml
+++ b/FreeSql.DbContext/FreeSql.DbContext.xml
@@ -802,3 +802,14 @@
+Microsoft.Extensions.DependencyInjection.FreeSqlRepositoryDependencyInjection.AddFreeRepository(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action{FreeSql.FluentDataFilter},System.Reflection.Assembly[])">
+
+ 批量注入 Repository,可以参考代码自行调整
+
+
+
+
+
+
+
+