From eec3f49f5fc8667046ac40452c39585161a160a9 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Tue, 14 Jun 2022 12:55:52 +0800 Subject: [PATCH] Update .net core project --- .../Abstract/DeleteProvider/DeleteableProvider.cs | 8 ++++++-- .../Abstract/FastestProvider/FastestProvider.cs | 4 ++++ .../Abstract/SqlBuilderProvider/DeleteBuilder.cs | 1 + .../Abstract/SqlBuilderProvider/UpdateBuilder.cs | 1 + .../Abstract/UpdateProvider/UpdateableProvider.cs | 4 ++++ .../ExpressionsToSql/Common/ExpressionResult.cs | 1 + .../ExpressionsToSql/ResolveItems/BaseResolve.cs | 11 ++++++++++- .../ResolveItems/MemberExpressionResolve.cs | 2 ++ .../ResolveItems/MethodCallExpressionResolve.cs | 4 ++++ 9 files changed, 33 insertions(+), 3 deletions(-) diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs index 6a17c2c9d..a15c56f0a 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs @@ -184,8 +184,12 @@ namespace SqlSugar { var expResult = DeleteBuilder.GetExpressionValue(expression, ResolveExpressType.WhereSingle); 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) + "."); + if (expression.ToString().Contains("Subqueryable()")) { + whereString = whereString.Replace(this.SqlBuilder.GetTranslationColumnName(expression.Parameters.First().Name) + ".", this.SqlBuilder.GetTranslationTableName(this.EntityInfo.DbTableName) + "."); + } + else if (expResult.IsNavicate) + { + whereString = whereString.Replace(expression.Parameters.First().Name + ".", this.SqlBuilder.GetTranslationTableName(this.EntityInfo.DbTableName) + "."); } DeleteBuilder.WhereInfos.Add(whereString); return this; diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/FastestProvider/FastestProvider.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/FastestProvider/FastestProvider.cs index 10e9a6b25..a7e40f15a 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/FastestProvider/FastestProvider.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/FastestProvider/FastestProvider.cs @@ -213,6 +213,10 @@ namespace SqlSugar dataTable.TableName = this.queryable.SqlBuilder.GetTranslationTableName(tableName); DataTable dt = GetCopyWriteDataTable(dataTable); IFastBuilder buider = GetBuider(); + if (dt.Columns.Count != dataTable.Columns.Count) + { + ActionIgnoreColums(whereColumns, updateColumns, dt, buider.IsActionUpdateColumns); + } buider.Context = context; await buider.CreateTempAsync(dt); await buider.ExecuteBulkCopyAsync(dt); diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/SqlBuilderProvider/DeleteBuilder.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/SqlBuilderProvider/DeleteBuilder.cs index 724edf92c..c8e0f5114 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/SqlBuilderProvider/DeleteBuilder.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/SqlBuilderProvider/DeleteBuilder.cs @@ -154,6 +154,7 @@ namespace SqlSugar { resolveExpress.PgSqlIsAutoToLower = true; } + resolveExpress.SugarContext = new ExpressionOutParameter() { Context = this.Context }; resolveExpress.MappingColumns = Context.MappingColumns; resolveExpress.MappingTables = Context.MappingTables; resolveExpress.IgnoreComumnList = Context.IgnoreColumns; diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/SqlBuilderProvider/UpdateBuilder.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/SqlBuilderProvider/UpdateBuilder.cs index 4724f0a46..18b118efd 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/SqlBuilderProvider/UpdateBuilder.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/SqlBuilderProvider/UpdateBuilder.cs @@ -142,6 +142,7 @@ namespace SqlSugar resolveExpress.IgnoreComumnList = Context.IgnoreColumns; resolveExpress.SqlFuncServices = Context.CurrentConnectionConfig.ConfigureExternalServices == null ? null : Context.CurrentConnectionConfig.ConfigureExternalServices.SqlFuncServices; }; + resolveExpress.SugarContext = new ExpressionOutParameter() { Context = this.Context }; resolveExpress.Resolve(expression, resolveType); this.Parameters.AddRange(resolveExpress.Parameters); var result = resolveExpress.Result; diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs index 944170d6b..19a0eeab4 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs @@ -416,6 +416,10 @@ namespace SqlSugar { whereString = whereString.Replace(this.SqlBuilder.GetTranslationColumnName(expression.Parameters.First().Name) + ".", this.SqlBuilder.GetTranslationTableName(this.EntityInfo.DbTableName) + "."); } + else if (expResult.IsNavicate) + { + whereString = whereString.Replace(expression.Parameters.First().Name + ".", this.SqlBuilder.GetTranslationTableName(this.EntityInfo.DbTableName) + "."); + } UpdateBuilder.WhereValues.Add(whereString); return this; } diff --git a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/Common/ExpressionResult.cs b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/Common/ExpressionResult.cs index 316e71587..d7577b4b6 100644 --- a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/Common/ExpressionResult.cs +++ b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/Common/ExpressionResult.cs @@ -9,6 +9,7 @@ namespace SqlSugar { public bool IsLockCurrentParameter { get; set; } public bool IsUpper { get; set; } + public bool IsNavicate { get; set; } private ExpressionParameter _CurrentParameter; public ExpressionParameter CurrentParameter { diff --git a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve.cs b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve.cs index 8d331ef00..373b643fe 100644 --- a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve.cs +++ b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve.cs @@ -682,7 +682,16 @@ namespace SqlSugar } return result; ; } - + protected void SetNavigateResult() + { + if (this.Context != null) + { + if (this.Context.Result != null) + { + this.Context.Result.IsNavicate = true; + } + } + } private string GetAsName(Expression item, object shortName, PropertyInfo property) { string asName; diff --git a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs index 9a52043d3..2172ae3f1 100644 --- a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs +++ b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs @@ -76,6 +76,7 @@ namespace SqlSugar if (nav.IsNavgate(expression)) { var value = nav.GetSql(); + SetNavigateResult(); this.Context.SingleTableNameSubqueryShortName = nav.ShorName; if (isSetTempData) { @@ -89,6 +90,7 @@ namespace SqlSugar else if (navN.IsNavgate(expression)) { var value = navN.GetMemberSql(); + SetNavigateResult(); this.Context.SingleTableNameSubqueryShortName = navN.shorName; if (isSetTempData) { diff --git a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs index f0a917f32..50a72b0a8 100644 --- a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs +++ b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs @@ -248,6 +248,7 @@ namespace SqlSugar if (nav.IsNavgate(express)) { var sql = nav.GetSql(); + SetNavigateResult(); this.Context.SingleTableNameSubqueryShortName = nav.ShorName; base.AppendValue(parameter, isLeft, sql); return; @@ -257,6 +258,7 @@ namespace SqlSugar if (nav2.IsNavgate(express)) { var sql = nav2.GetSql(); + SetNavigateResult(); this.Context.SingleTableNameSubqueryShortName = nav2.shorName; base.AppendValue(parameter, isLeft, sql); return; @@ -293,6 +295,8 @@ namespace SqlSugar } } + + private void NativeExtensionMethod(ExpressionParameter parameter, MethodCallExpression express, bool? isLeft, string name, List appendArgs = null) { var method = express.Method;