From 9a3ae38c4adaf3ab9f899bd92da90ceadef66a48 Mon Sep 17 00:00:00 2001 From: "610262374@qq.com" <610262374@qq.com> Date: Wed, 12 Dec 2018 02:06:05 +0800 Subject: [PATCH] Update Core --- .../SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs | 6 +++++- .../Abstract/InsertableProvider/InsertableProvider.cs | 6 ++++++ .../Abstract/SqlBuilderProvider/SqlBuilderProvider.cs | 4 ++++ .../SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs | 7 ++++++- .../ResolveItems/BinaryExpressionResolve.cs | 4 ++++ .../ResolveItems/MethodCallExpressionResolve.cs | 2 +- .../SqlSeverTest/SqlSugar/Interface/Insertable.cs | 1 + .../SqlSeverTest/SqlSugar/Utilities/UtilConstants.cs | 1 + 8 files changed, 28 insertions(+), 3 deletions(-) diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs index e68e67c07..873a5ef36 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs @@ -166,7 +166,11 @@ namespace SqlSugar public IDeleteable Where(Expression> expression) { var expResult = DeleteBuilder.GetExpressionValue(expression, ResolveExpressType.WhereSingle); - DeleteBuilder.WhereInfos.Add(expResult.GetResultString()); + var whereString = expResult.GetResultString(); + if (expression.ToString().Contains("Subqueryable()")){ + whereString = whereString.Replace(this.SqlBuilder.GetTranslationColumnName(expression.Parameters.First().Name) + ".",this.SqlBuilder.GetTranslationTableName(this.EntityInfo.DbTableName) + "."); + } + DeleteBuilder.WhereInfos.Add(whereString); return this; } diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs index b65d0b8d7..9f9d4c6de 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs @@ -184,6 +184,12 @@ namespace SqlSugar return this; } + public IInsertable InsertColumns(string[] columns) + { + this.InsertBuilder.DbColumnInfoList = this.InsertBuilder.DbColumnInfoList.Where(it => columns.Any(ig => ig.Equals(it.PropertyName, StringComparison.CurrentCultureIgnoreCase))).ToList(); + return this; + } + public IInsertable InsertColumns(Func insertColumMethod) { this.InsertBuilder.DbColumnInfoList = this.InsertBuilder.DbColumnInfoList.Where(it => insertColumMethod(it.PropertyName)).ToList(); diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider.cs index 733cd31c9..d81d548d3 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider.cs @@ -75,6 +75,10 @@ namespace SqlSugar public virtual string GetNoTranslationColumnName(string name) { + if (name.Contains("=")) + { + name=name.Split('=').First(); + } if (!name.Contains(SqlTranslationLeft)) return name; return name == null ? string.Empty : Regex.Match(name, @".*" + "\\" + SqlTranslationLeft + "(.*?)" + "\\" + SqlTranslationRight + "").Groups[1].Value; } diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs index a55a9e8b0..347a0b8ab 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs @@ -274,7 +274,12 @@ namespace SqlSugar public IUpdateable Where(Expression> expression) { var expResult = UpdateBuilder.GetExpressionValue(expression, ResolveExpressType.WhereSingle); - UpdateBuilder.WhereValues.Add(expResult.GetResultString()); + var whereString = expResult.GetResultString(); + if (expression.ToString().Contains("Subqueryable()")) + { + whereString = whereString.Replace(this.SqlBuilder.GetTranslationColumnName(expression.Parameters.First().Name) + ".", this.SqlBuilder.GetTranslationTableName(this.EntityInfo.DbTableName) + "."); + } + UpdateBuilder.WhereValues.Add(whereString); return this; } diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/BinaryExpressionResolve.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/BinaryExpressionResolve.cs index f4779919e..5d69baebd 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/BinaryExpressionResolve.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/BinaryExpressionResolve.cs @@ -36,6 +36,10 @@ namespace SqlSugar { leftExpression = (leftExpression as UnaryExpression).Operand; } + if (leftExpression is UnaryExpression && (leftExpression as UnaryExpression).Operand.Type == UtilConstants.BoolType && (leftExpression as UnaryExpression).NodeType != ExpressionType.Not&&rightExpression.Type==UtilConstants.BoolTypeNull) + { + leftExpression = (leftExpression as UnaryExpression).Operand; + } if (rightExpression is UnaryExpression&& (rightExpression as UnaryExpression).Operand.Type==UtilConstants.BoolType&& (rightExpression as UnaryExpression).NodeType != ExpressionType.Not) { rightExpression = (rightExpression as UnaryExpression).Operand; diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs index deb687b08..9248880f7 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs @@ -59,7 +59,7 @@ namespace SqlSugar { CaseWhenResolve caseResole = new CaseWhenResolve(express, this.Context, parameter.OppsiteExpression); var appendSql = caseResole.GetSql(); - if (this.Context.ResolveType.IsIn(ResolveExpressType.SelectMultiple, ResolveExpressType.SelectSingle)) + if (this.Context.ResolveType.IsIn(ResolveExpressType.SelectMultiple, ResolveExpressType.SelectSingle,ResolveExpressType.Update)) { parameter.BaseParameter.CommonTempData = appendSql; } diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/Insertable.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/Insertable.cs index 654ee5f8d..5091f4952 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/Insertable.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/Insertable.cs @@ -23,6 +23,7 @@ namespace SqlSugar IInsertable AS(string tableName); IInsertable With(string lockString); IInsertable InsertColumns(Expression> columns); + IInsertable InsertColumns(string[] columns); IInsertable InsertColumns(Func insertColumMethod); IInsertable IgnoreColumns(Expression> columns); IInsertable IgnoreColumns(Func ignoreColumMethod); diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Utilities/UtilConstants.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Utilities/UtilConstants.cs index 0119b2a9d..b37082eac 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Utilities/UtilConstants.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Utilities/UtilConstants.cs @@ -19,6 +19,7 @@ namespace SqlSugar internal static Type LongType = typeof(long); internal static Type GuidType = typeof(Guid); internal static Type BoolType = typeof(bool); + internal static Type BoolTypeNull = typeof(bool?); internal static Type ByteType = typeof(Byte); internal static Type ObjType = typeof(object); internal static Type DobType = typeof(double);