diff --git a/Src/Asp.Net/SqlServerTest/Demos/3_Insert.cs b/Src/Asp.Net/SqlServerTest/Demos/3_Insert.cs index f3d162dae..247728707 100644 --- a/Src/Asp.Net/SqlServerTest/Demos/3_Insert.cs +++ b/Src/Asp.Net/SqlServerTest/Demos/3_Insert.cs @@ -55,6 +55,11 @@ namespace OrmTest.Demo var t10 = db.Insertable(insertObjs.ToArray()).InsertColumns(it => new { it.Name }).ExecuteCommand(); var t11 = db.Insertable(insertObjs.ToArray()).ExecuteCommand(); + + + var t12 = db.Insertable(insertObj).IgnoreColumns(it => it == "Name" || it == "TestId").ExecuteReturnIdentityAsync(); + t12.Start(); + t12.Wait(); } } } diff --git a/Src/Asp.Net/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs index c86a9ee1e..cec7fbcc2 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs @@ -255,6 +255,77 @@ namespace SqlSugar this.Context.MappingTables = OldMappingTableList; } } + private IInsertable CopyInsertable() + { + var asyncContext = this.Context.CopyContext(this.Context.RewritableMethods.TranslateCopy(this.Context.CurrentConnectionConfig)); + asyncContext.CurrentConnectionConfig.IsAutoCloseConnection = true; + asyncContext.Ado.IsEnableLogEvent = this.Context.Ado.IsEnableLogEvent; + asyncContext.Ado.LogEventStarting = this.Context.Ado.LogEventStarting; + asyncContext.Ado.LogEventCompleted = this.Context.Ado.LogEventCompleted; + asyncContext.Ado.ProcessingEventStartingSQL = this.Context.Ado.ProcessingEventStartingSQL; + + var asyncInsertable = asyncContext.Insertable(this.InsertObjs); + var asyncInsertableBuilder = asyncInsertable.InsertBuilder; + asyncInsertableBuilder.DbColumnInfoList = this.InsertBuilder.DbColumnInfoList; + asyncInsertableBuilder.EntityInfo = this.InsertBuilder.EntityInfo; + asyncInsertableBuilder.Parameters = this.InsertBuilder.Parameters; + asyncInsertableBuilder.sql = this.InsertBuilder.sql; + asyncInsertableBuilder.IsNoInsertNull = this.InsertBuilder.IsNoInsertNull; + asyncInsertableBuilder.IsReturnIdentity = this.InsertBuilder.IsReturnIdentity; + asyncInsertableBuilder.EntityInfo = this.InsertBuilder.EntityInfo; + asyncInsertableBuilder.TableWithString = this.InsertBuilder.TableWithString; + return asyncInsertable; + } + + public Task ExecuteCommandAsync() + { + Task result = new Task(() => + { + IInsertable asyncInsertable = CopyInsertable(); + return asyncInsertable.ExecuteCommand(); + }); + return result; + } + + public Task ExecuteReturnIdentityAsync() + { + Task result = new Task(() => + { + IInsertable asyncInsertable = CopyInsertable(); + return asyncInsertable.ExecuteReturnIdentity(); + }); + return result; + } + + public Task ExecuteReturnEntityAsync() + { + Task result = new Task(() => + { + IInsertable asyncInsertable = CopyInsertable(); + return asyncInsertable.ExecuteReturnEntity(); + }); + return result; + } + + public Task ExecuteCommandIdentityIntoEntityAsync() + { + Task result = new Task(() => + { + IInsertable asyncInsertable = CopyInsertable(); + return asyncInsertable.ExecuteCommandIdentityIntoEntity(); + }); + return result; + } + + public Task ExecuteReturnBigIdentityAsync() + { + Task result = new Task(() => + { + IInsertable asyncInsertable = CopyInsertable(); + return asyncInsertable.ExecuteReturnBigIdentity(); + }); + return result; + } #endregion } } diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index 34ae62227..a53215f8d 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -1029,6 +1029,8 @@ namespace SqlSugar asyncQueryableBuilder.EntityType = this.QueryBuilder.EntityType; asyncQueryableBuilder.EntityName = this.QueryBuilder.EntityName; asyncQueryableBuilder.Parameters = this.QueryBuilder.Parameters; + asyncQueryableBuilder.TableShortName = this.QueryBuilder.TableShortName; + asyncQueryableBuilder.TableWithString = this.QueryBuilder.TableWithString; return asyncQueryable; } #endregion diff --git a/Src/Asp.Net/SqlSugar/Entities/ModelContext.cs b/Src/Asp.Net/SqlSugar/Entities/ModelContext.cs index 32ec11834..aec879c4f 100644 --- a/Src/Asp.Net/SqlSugar/Entities/ModelContext.cs +++ b/Src/Asp.Net/SqlSugar/Entities/ModelContext.cs @@ -1,4 +1,5 @@ -using System; +using Newtonsoft.Json; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -8,6 +9,7 @@ namespace SqlSugar public class ModelContext { [SugarColumn(IsIgnore = true)] + [JsonIgnore] public SqlSugarClient Context { get; set; } public ISugarQueryable CreateMapping() where T : class, new() { diff --git a/Src/Asp.Net/SqlSugar/Interface/Insertable.cs b/Src/Asp.Net/SqlSugar/Interface/Insertable.cs index a722476b8..862739ccd 100644 --- a/Src/Asp.Net/SqlSugar/Interface/Insertable.cs +++ b/Src/Asp.Net/SqlSugar/Interface/Insertable.cs @@ -9,11 +9,17 @@ namespace SqlSugar { public interface IInsertable { + InsertBuilder InsertBuilder { get; set; } int ExecuteCommand(); + Task ExecuteCommandAsync(); int ExecuteReturnIdentity(); + Task ExecuteReturnIdentityAsync(); T ExecuteReturnEntity(); + Task ExecuteReturnEntityAsync(); bool ExecuteCommandIdentityIntoEntity(); + Task ExecuteCommandIdentityIntoEntityAsync(); long ExecuteReturnBigIdentity(); + Task ExecuteReturnBigIdentityAsync(); IInsertable AS(string tableName); IInsertable With(string lockString); IInsertable InsertColumns(Expression> columns);