diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/FastestProvider/FastestProvider.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/FastestProvider/FastestProvider.cs index a7e40f15a..439a80b8e 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/FastestProvider/FastestProvider.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/FastestProvider/FastestProvider.cs @@ -85,8 +85,29 @@ namespace SqlSugar } public int BulkUpdate(List datas, string[] whereColumns, string[] updateColumns) { + whereColumns = whereColumns.Select(x => this.entityInfo.Columns.FirstOrDefault(it => it.PropertyName.EqualCase(x) || it.DbColumnName.EqualCase(x))?.DbColumnName ?? x).ToArray(); + updateColumns = updateColumns.Select(x => this.entityInfo.Columns.FirstOrDefault(it => it.PropertyName.EqualCase(x) || it.DbColumnName.EqualCase(x))?.DbColumnName ?? x).ToArray(); return BulkUpdateAsync(datas,whereColumns,updateColumns).ConfigureAwait(true).GetAwaiter().GetResult(); } + + public int BulkUpdate(List datas, string[] whereColumns) + { + return BulkUpdateAsync(datas, whereColumns).GetAwaiter().GetResult(); + } + + public async Task BulkUpdateAsync(List datas, string[] whereColumns) + { + whereColumns = whereColumns.Select(x => this.entityInfo.Columns.FirstOrDefault(it => it.PropertyName.EqualCase(x) || it.DbColumnName.EqualCase(x))?.DbColumnName ?? x).ToArray(); + var updateColumns = this.entityInfo.Columns + .Where(it => !whereColumns.Any(z => z.EqualCase(it.DbColumnName))) + .Where(it => !it.IsIdentity) + .Where(it => !it.IsPrimarykey) + .Where(it => !it.IsOnlyIgnoreUpdate) + .Where(it => !it.IsIgnore) + .Select(it => it.DbColumnName) + .ToArray(); + return await BulkUpdateAsync(datas, whereColumns, updateColumns).ConfigureAwait(true); + } public async Task BulkUpdateAsync(List datas,string [] whereColumns,string [] updateColumns) { diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/SugarProvider/SqlSugarProvider.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/SugarProvider/SqlSugarProvider.cs index c0dd2737e..890a9613c 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/SugarProvider/SqlSugarProvider.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/SugarProvider/SqlSugarProvider.cs @@ -1131,7 +1131,19 @@ namespace SqlSugar { Queues = new QueueList(); } - this.Queues.Add(sql, this.Context.Ado.GetParameters(parsmeters)); + var pars = this.Context.Ado.GetParameters(parsmeters); + if (pars != null) + { + foreach (var par in pars) + { + if (par.ParameterName.StartsWith(":")) + { + par.ParameterName = ("@" + par.ParameterName.Trim(':')); + } + } + } + this.Queues.Add(sql, pars); + } public void AddQueue(string sql, SugarParameter parsmeter) { diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs index 33651ee9c..a5e50b145 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs @@ -385,6 +385,23 @@ namespace SqlSugar AppendSets(); return this; } + public IUpdateable SetColumnsIF(bool isUpdateColumns, Expression> filedNameExpression, object fieldValue) + { + if (isUpdateColumns) + { + return SetColumns(filedNameExpression, fieldValue); + } + else + { + return this; + } + } + public IUpdateable SetColumns(Expression> filedNameExpression, object fieldValue) + { + var name= UpdateBuilder.GetExpressionValue(filedNameExpression,ResolveExpressType.WhereSingle).GetString(); + name = UpdateBuilder.Builder.GetNoTranslationColumnName(name); + return SetColumns(name, fieldValue); + } public IUpdateable SetColumns(Expression> columns) { ThrowUpdateByObject(); diff --git a/Src/Asp.NetCore2/SqlSugar/Interface/IFastest.cs b/Src/Asp.NetCore2/SqlSugar/Interface/IFastest.cs index 81ebe5d67..7ca34cf1a 100644 --- a/Src/Asp.NetCore2/SqlSugar/Interface/IFastest.cs +++ b/Src/Asp.NetCore2/SqlSugar/Interface/IFastest.cs @@ -23,6 +23,8 @@ namespace SqlSugar int BulkUpdate(List datas); Task BulkUpdateAsync(List datas); int BulkUpdate(List datas, string[] whereColumns, string[] updateColumns); + int BulkUpdate(List datas, string[] whereColumns); + Task BulkUpdateAsync(List datas, string[] whereColumns); Task BulkUpdateAsync(List datas, string[] whereColumns, string[] updateColumns); int BulkUpdate(string tableName,DataTable dataTable, string[] whereColumns, string[] updateColumns); int BulkUpdate(DataTable dataTable, string[] whereColumns, string[] updateColumns); diff --git a/Src/Asp.NetCore2/SqlSugar/Interface/IUpdateable.cs b/Src/Asp.NetCore2/SqlSugar/Interface/IUpdateable.cs index 7f717dfeb..bc7348f87 100644 --- a/Src/Asp.NetCore2/SqlSugar/Interface/IUpdateable.cs +++ b/Src/Asp.NetCore2/SqlSugar/Interface/IUpdateable.cs @@ -70,7 +70,8 @@ namespace SqlSugar IUpdateable SetColumns(Expression> columns); IUpdateable SetColumns(string fieldName,object fieldValue); - + IUpdateable SetColumns(Expression> filedNameExpression, object fieldValue); + IUpdateable SetColumnsIF(bool isUpdateColumns, Expression> filedNameExpression, object fieldValue); IUpdateable UpdateColumnsIF(bool isUpdateColumns,Expression> columns); IUpdateable UpdateColumnsIF(bool isUpdateColumns, params string[] columns);