diff --git a/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs index 1bb5af2cb..6583b8c73 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs @@ -128,6 +128,46 @@ namespace SqlSugar #endregion #region Common + public IUpdateable Clone() + { + this.Context.SugarActionType = SugarActionType.Update; + var result = InstanceFactory.GetUpdateableProvider(this.Context.CurrentConnectionConfig); + var sqlBuilder = InstanceFactory.GetSqlbuilder(this.Context.CurrentConnectionConfig); ; + result.Context = this.Context; + result.EntityInfo = this.Context.EntityMaintenance.GetEntityInfo(); + result.SqlBuilder = sqlBuilder; + result.SqlBuilder.Context = this.Context; + result.UpdateObjs = UpdateObjs; + result.WhereColumnList= this.WhereColumnList; + result.IsWhereColumns = this.IsWhereColumns; + result.IgnoreColumnNameList= this.IgnoreColumnNameList; + result.IsAs = this.IsAs; + result.IsOffIdentity= this.IsOffIdentity; + result.IsEnableDiffLogEvent= this.IsEnableDiffLogEvent; + result.diffModel = this.diffModel; + result.UpdateParameterIsNull= this.UpdateParameterIsNull; + result.RemoveCacheFunc= this.RemoveCacheFunc; + result.SetColumnsIndex = this.SetColumnsIndex; + result.OldMappingTableList= this.OldMappingTableList; + result.MappingColumnList= this.MappingColumnList; + result.columns = this.columns.ToList(); + result.UpdateBuilder = InstanceFactory.GetUpdateBuilder(this.Context.CurrentConnectionConfig); + result.UpdateBuilder.Builder = sqlBuilder; + result.UpdateBuilder.LambdaExpressions = InstanceFactory.GetLambdaExpressions(this.Context.CurrentConnectionConfig); + result.Context=this.Context; + result.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.ToList(); + result.UpdateBuilder.TableName= this.UpdateBuilder.TableName; + result.UpdateBuilder.WhereValues = this.UpdateBuilder.WhereValues.ToList(); + result.UpdateBuilder.Parameters= this.UpdateBuilder.Parameters.ToList(); + result.UpdateBuilder.IsListUpdate= this.UpdateBuilder.IsListUpdate; + result.UpdateBuilder.IsWhereColumns= this.UpdateBuilder.IsWhereColumns; + result.UpdateBuilder.WhereValues=this.UpdateBuilder.WhereValues.ToList(); + result.UpdateBuilder.IsNoUpdateDefaultValue = this.UpdateBuilder.IsNoUpdateDefaultValue; + result.UpdateBuilder.IsNoUpdateNull= this.UpdateBuilder.IsNoUpdateNull; + result.UpdateBuilder.SetValues= this.UpdateBuilder.SetValues.ToList(); + result.UpdateBuilder.Context = this.Context; + return result; + } public IUpdateable With(string lockString) { if (this.Context.CurrentConnectionConfig.DbType == DbType.SqlServer) diff --git a/Src/Asp.Net/SqlSugar/Interface/IUpdateable.cs b/Src/Asp.Net/SqlSugar/Interface/IUpdateable.cs index 791eb691f..47026dd11 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IUpdateable.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IUpdateable.cs @@ -104,5 +104,6 @@ namespace SqlSugar SplitTableUpdateProvider SplitTable(Func, IEnumerable> getTableNamesFunc); SplitTableUpdateByObjectProvider SplitTable(); IUpdateable EnableQueryFilter(); + IUpdateable Clone(); } }