From d58c12d3b1851f3bb9e7d08f585386f0298e15cd Mon Sep 17 00:00:00 2001 From: "610262374@qq.com" Date: Sun, 9 Jun 2019 21:19:49 +0800 Subject: [PATCH] UpdateWhereColumns --- .../Abstract/SqlBuilderProvider/UpdateBuilder.cs | 10 ++++++++++ .../Abstract/UpdateProvider/UpdateableProvider.cs | 1 + 2 files changed, 11 insertions(+) diff --git a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/UpdateBuilder.cs b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/UpdateBuilder.cs index 3ef6a1855..a5319b992 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/UpdateBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/UpdateBuilder.cs @@ -31,6 +31,7 @@ namespace SqlSugar public bool IsNoUpdateDefaultValue { get; set; } public List PrimaryKeys { get; set; } public bool IsOffIdentity { get; set; } + public bool IsWhereColumns { get; set; } public virtual string SqlTemplate { @@ -253,6 +254,15 @@ namespace SqlSugar whereString += Builder.GetTranslationColumnName(item) + "=" + this.Context.Ado.SqlParameterKeyWord + item; } } + if (PrimaryKeys.HasValue()&&IsWhereColumns) + { + foreach (var item in PrimaryKeys) + { + var isFirst = whereString == null; + whereString += (isFirst ? " WHERE " : " AND "); + whereString += Builder.GetTranslationColumnName(item) + "=" + this.Context.Ado.SqlParameterKeyWord + item; + } + } return string.Format(SqlTemplate, GetTableNameString, columnsString, whereString); } diff --git a/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs index 61dbbe8a1..abe3438a3 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs @@ -167,6 +167,7 @@ namespace SqlSugar public IUpdateable WhereColumns(Expression> columns) { this.IsWhereColumns = true; + UpdateBuilder.IsWhereColumns = true; Check.Exception(UpdateParameterIsNull == true, "Updateable().Updateable is error,Use Updateable(obj).WhereColumns"); var whereColumns = UpdateBuilder.GetExpressionValue(columns, ResolveExpressType.ArraySingle).GetResultArray().Select(it => this.SqlBuilder.GetNoTranslationColumnName(it)).ToList(); if (this.WhereColumnList == null) this.WhereColumnList = new List();