diff --git a/Src/Asp.Net/SqlSugar/Abstract/InsertableProvider/ParameterInsertable.cs b/Src/Asp.Net/SqlSugar/Abstract/InsertableProvider/ParameterInsertable.cs index c7a7aff67..63a3134bb 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/InsertableProvider/ParameterInsertable.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/InsertableProvider/ParameterInsertable.cs @@ -34,12 +34,13 @@ namespace SqlSugar } public async Task ExecuteCommandAsync() { + int result = 0; var inserable = Inserable as InsertableProvider; var columns = inserable.InsertBuilder.DbColumnInfoList.GroupBy(it => it.DbColumnName).Select(it => it.Key).Distinct().ToList(); var tableWithString = inserable.InsertBuilder.TableWithString; var removeCacheFunc = inserable.RemoveCacheFunc; var objects = inserable.InsertObjs; - await this.Context.Utilities.PageEachAsync(objects, 60, pagelist => + await this.Context.Utilities.PageEachAsync(objects, 60,async pagelist => { foreach (var item in pagelist) { @@ -49,9 +50,10 @@ namespace SqlSugar (itemable as InsertableProvider).RemoveCacheFunc = removeCacheFunc; itemable.AddQueue(); } - return this.Context.SaveQueuesAsync(false); + result+= await this.Context.SaveQueuesAsync(false); + return result; }); - return objects.Length; + return result; } } } diff --git a/Src/Asp.Net/SqlSugar/Infrastructure/ContextMethods.cs b/Src/Asp.Net/SqlSugar/Infrastructure/ContextMethods.cs index d6f93c290..da26e53ba 100644 --- a/Src/Asp.Net/SqlSugar/Infrastructure/ContextMethods.cs +++ b/Src/Asp.Net/SqlSugar/Infrastructure/ContextMethods.cs @@ -652,6 +652,19 @@ namespace SqlSugar } } } + public async Task PageEachAsync(IEnumerable pageItems, int pageSize, Func, Task> action) + { + if (pageItems != null && pageItems.Any()) + { + int totalRecord = pageItems.Count(); + int pageCount = (totalRecord + pageSize - 1) / pageSize; + for (int i = 1; i <= pageCount; i++) + { + var list = pageItems.Skip((i - 1) * pageSize).Take(pageSize).ToList(); + await action(list); + } + } + } #endregion } } diff --git a/Src/Asp.Net/SqlSugar/Interface/IContextMethods.cs b/Src/Asp.Net/SqlSugar/Interface/IContextMethods.cs index e49f10934..854d2fcf6 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IContextMethods.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IContextMethods.cs @@ -36,5 +36,6 @@ namespace SqlSugar void RemoveCache(string key); void PageEach(IEnumerable pageItems, int pageSize, Action> action); Task PageEachAsync(IEnumerable pageItems, int pageSize, Func, Task> action); + Task PageEachAsync(IEnumerable pageItems, int pageSize, Func, Task> action); } }