From 7e746d0d492dcdb0bc2c7a0569129dcb66f5f4a9 Mon Sep 17 00:00:00 2001 From: skx <610262374@qq.com> Date: Thu, 4 Feb 2021 14:24:04 +0800 Subject: [PATCH] Add check message --- .../SqlServerTest/Demo/Demo2_Updateable.cs | 2 +- .../UpdateProvider/UpdateableProvider.cs | 62 ++++++++++++------- 2 files changed, 42 insertions(+), 22 deletions(-) diff --git a/Src/Asp.Net/SqlServerTest/Demo/Demo2_Updateable.cs b/Src/Asp.Net/SqlServerTest/Demo/Demo2_Updateable.cs index bcd0fe9dc..abdebd208 100644 --- a/Src/Asp.Net/SqlServerTest/Demo/Demo2_Updateable.cs +++ b/Src/Asp.Net/SqlServerTest/Demo/Demo2_Updateable.cs @@ -98,7 +98,7 @@ namespace OrmTest db.Updateable(updateObj).With(SqlWith.UpdLock).ExecuteCommand(); //Where Sql - db.Updateable(updateObj).Where("id=@x", new { x = "1" }).ExecuteCommand(); + //db.Updateable(updateObj).Where("id=@x", new { x = "1" }).ExecuteCommand(); var levelCode = "123213123131321"; diff --git a/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs index c611c7c21..b75520a7e 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs @@ -172,9 +172,11 @@ namespace SqlSugar return this; } + #region Update by object public IUpdateable WhereColumns(Expression> columns) { + ThrowUpdateByExpression(); this.IsWhereColumns = true; UpdateBuilder.IsWhereColumns = true; Check.Exception(UpdateParameterIsNull == true, "Updateable().Updateable is error,Use Updateable(obj).WhereColumns"); @@ -188,12 +190,15 @@ namespace SqlSugar } public IUpdateable WhereColumns(string columnName) { + + ThrowUpdateByExpression(); if (this.WhereColumnList == null) this.WhereColumnList = new List(); this.WhereColumnList.Add(columnName); return this; } public IUpdateable WhereColumns(string[] columnNames) { + ThrowUpdateByExpression(); if (this.WhereColumnList == null) this.WhereColumnList = new List(); foreach (var columnName in columnNames) { @@ -202,9 +207,9 @@ namespace SqlSugar return this; } - public IUpdateable UpdateColumns(Expression> columns) { + ThrowUpdateByExpression(); var updateColumns = UpdateBuilder.GetExpressionValue(columns, ResolveExpressType.ArraySingle).GetResultArray().Select(it => this.SqlBuilder.GetNoTranslationColumnName(it)).ToList(); List primaryKeys = GetPrimaryKeys(); foreach (var item in this.UpdateBuilder.DbColumnInfoList) @@ -220,12 +225,30 @@ namespace SqlSugar } public IUpdateable UpdateColumns(string[] columns) { + ThrowUpdateByExpression(); this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => GetPrimaryKeys().Select(iit => iit.ToLower()).Contains(it.DbColumnName.ToLower()) || columns.Contains(it.PropertyName, StringComparer.OrdinalIgnoreCase)).ToList(); return this; } + public IUpdateable UpdateColumnsIF(bool isUpdateColumns, Expression> columns) + { + ThrowUpdateByExpression(); + if (isUpdateColumns) + UpdateColumns(columns); + return this; + } + public IUpdateable UpdateColumnsIF(bool isUpdateColumns, string[] columns) + { + ThrowUpdateByExpression(); + if (isUpdateColumns) + UpdateColumns(columns); + return this; + } + #endregion + #region Update by expression public IUpdateable SetColumns(Expression> columns) { + ThrowUpdateByObject(); var expResult = UpdateBuilder.GetExpressionValue(columns, ResolveExpressType.Update); var resultArray = expResult.GetResultArray(); Check.ArgumentNullException(resultArray, "UpdateColumns Parameter error, UpdateColumns(it=>new T{ it.id=1}) is valid, UpdateColumns(it=>T) is error"); @@ -247,9 +270,9 @@ namespace SqlSugar AppendSets(); return this; } - public IUpdateable SetColumns(Expression> columns) { + ThrowUpdateByObject(); CheckTranscodeing(); var binaryExp = columns.Body as BinaryExpression; Check.Exception(!binaryExp.NodeType.IsIn(ExpressionType.Equal), "No support {0}", columns.ToString()); @@ -262,37 +285,24 @@ namespace SqlSugar AppendSets(); return this; } - - public IUpdateable UpdateColumnsIF(bool isUpdateColumns, Expression> columns) - { - if (isUpdateColumns) - UpdateColumns(columns); - return this; - } - public IUpdateable UpdateColumnsIF(bool isUpdateColumns, string[] columns) - { - if (isUpdateColumns) - UpdateColumns(columns); - return this; - } - - public IUpdateable SetColumnsIF(bool isUpdateColumns, Expression> columns) { + ThrowUpdateByObject(); if (isUpdateColumns) SetColumns(columns); return this; } public IUpdateable SetColumnsIF(bool isUpdateColumns, Expression> columns) { + ThrowUpdateByObject(); if (isUpdateColumns) SetColumns(columns); return this; } - public IUpdateable Where(Expression> expression) { + ThrowUpdateByObject(); var expResult = UpdateBuilder.GetExpressionValue(expression, ResolveExpressType.WhereSingle); var whereString = expResult.GetResultString(); if (expression.ToString().Contains("Subqueryable()")) @@ -304,6 +314,7 @@ namespace SqlSugar } public IUpdateable Where(string whereSql, object parameters = null) { + ThrowUpdateByObject(); if (whereSql.HasValue()) { UpdateBuilder.WhereValues.Add(whereSql); @@ -316,14 +327,14 @@ namespace SqlSugar } public IUpdateable Where(string fieldName, string conditionalType, object fieldValue) { + ThrowUpdateByObject(); var whereSql = this.SqlBuilder.GetWhere(fieldName, conditionalType, 0); this.Where(whereSql); string parameterName = this.SqlBuilder.SqlParameterKeyWord + fieldName + "0"; this.UpdateBuilder.Parameters.Add(new SugarParameter(parameterName, fieldValue)); return this; - } - - + } + #endregion #region Helper private void AppendSets() @@ -706,6 +717,15 @@ namespace SqlSugar } return result; } + + private void ThrowUpdateByExpression() + { + Check.Exception(UpdateParameterIsNull == true, ErrorMessage.GetThrowMessage("db.Updateable(obj) no support SetColumns() and Where()", "根据对象进行更新 db.Updateable(现有集合对象、实体、字典) 禁止使用 SetColumns和Where , 只有db.Updateable()或者db.Updateable(Expression)的方式才支持")); + } + private void ThrowUpdateByObject() + { + Check.Exception(UpdateParameterIsNull == false, ErrorMessage.GetThrowMessage("db.Updateable() and db.Updateable(Expression) no support UpdateColumns() and WhereColumns()", "根据表达式更新 db.Updateable()和db.Updateable(Expression) 禁止使用 UpdateColumns和WhereColumns , 只有db.Updateable(实体或集合)的方式才支持")); + } #endregion } }