diff --git a/Src/Asp.Net/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs index 4876da565..4a4405e5c 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs @@ -30,6 +30,10 @@ namespace SqlSugar RestoreMapping(); return Db.ExecuteCommand(sql, paramters); } + public bool ExecuteCommandHasChange() + { + return ExecuteCommand() > 0; + } public Task ExecuteCommandAsync() { Task result = new Task(() => @@ -40,6 +44,16 @@ namespace SqlSugar result.Start(); return result; } + public Task ExecuteCommandHasChangeAsync() + { + Task result = new Task(() => + { + IDeleteable asyncDeleteable = CopyDeleteable(); + return asyncDeleteable.ExecuteCommand()>0; + }); + result.Start(); + return result; + } public IDeleteable AS(string tableName) { var entityName = typeof(T).Name; @@ -188,7 +202,7 @@ namespace SqlSugar { if (DeleteBuilder.BigDataInValues == null) DeleteBuilder.BigDataInValues = new List(); - DeleteBuilder.BigDataInValues.AddRange(primaryKeyValues.Select(it=>(object)it)); + DeleteBuilder.BigDataInValues.AddRange(primaryKeyValues.Select(it => (object)it)); DeleteBuilder.BigDataFiled = primaryField; } return this; @@ -248,7 +262,8 @@ namespace SqlSugar } } - private IDeleteable CopyDeleteable() { + private IDeleteable CopyDeleteable() + { var asyncContext = this.Context.Utilities.CopyContext(true); asyncContext.CurrentConnectionConfig.IsAutoCloseConnection = true; diff --git a/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs index deca0a506..07f1fb563 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs @@ -33,6 +33,10 @@ namespace SqlSugar RestoreMapping(); return this.Ado.ExecuteCommand(sql, UpdateBuilder.Parameters == null ? null : UpdateBuilder.Parameters.ToArray()); } + public bool ExecuteCommandHasChange() + { + return this.ExecuteCommand() > 0; + } public Task ExecuteCommandAsync() { Task result = new Task(() => @@ -43,6 +47,16 @@ namespace SqlSugar result.Start(); return result; } + public Task ExecuteCommandHasChangeAsync() + { + Task result = new Task(() => + { + IUpdateable asyncUpdateable = CopyUpdateable(); + return asyncUpdateable.ExecuteCommand()>0; + }); + result.Start(); + return result; + } public IUpdateable AS(string tableName) { var entityName = typeof(T).Name; diff --git a/Src/Asp.Net/SqlSugar/Interface/IDeleteable.cs b/Src/Asp.Net/SqlSugar/Interface/IDeleteable.cs index a564e051f..f882d0abd 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IDeleteable.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IDeleteable.cs @@ -11,7 +11,9 @@ namespace SqlSugar { DeleteBuilder DeleteBuilder { get; set; } int ExecuteCommand(); + bool ExecuteCommandHasChange(); Task ExecuteCommandAsync(); + Task ExecuteCommandHasChangeAsync(); IDeleteable AS(string tableName); IDeleteable With(string lockString); IDeleteable Where(T deleteObj); diff --git a/Src/Asp.Net/SqlSugar/Interface/IUpdateable.cs b/Src/Asp.Net/SqlSugar/Interface/IUpdateable.cs index 1de0a953d..884e657a6 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IUpdateable.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IUpdateable.cs @@ -11,7 +11,9 @@ namespace SqlSugar { UpdateBuilder UpdateBuilder { get; set; } int ExecuteCommand(); + bool ExecuteCommandHasChange(); Task ExecuteCommandAsync(); + Task ExecuteCommandHasChangeAsync(); IUpdateable AS(string tableName); IUpdateable With(string lockString); IUpdateable Where(bool isNoUpdateNull,bool IsOffIdentity = false); diff --git a/Src/Asp.Net/SqliteTest/DataBase/SqlSugar4xTest.sqlite b/Src/Asp.Net/SqliteTest/DataBase/SqlSugar4xTest.sqlite index f96f67cbe..cdfadb70c 100644 Binary files a/Src/Asp.Net/SqliteTest/DataBase/SqlSugar4xTest.sqlite and b/Src/Asp.Net/SqliteTest/DataBase/SqlSugar4xTest.sqlite differ