From d2af5772b370bb71d79c1d0f535153ac26a936d2 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Tue, 15 Aug 2023 16:15:58 +0800 Subject: [PATCH] Synchronization code --- .../Abstract/QueryableProvider/QueryableProvider.cs | 8 ++++++++ .../ResolveItems/OneToManyNavgateExpression.cs | 12 ++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index cd608abfd..3cd1c7a13 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -381,6 +381,10 @@ namespace SqlSugar } public ISugarQueryable Filter(Type type) { + if (type == null) + { + return this; + } this.Context.InitMappingInfo(type); var whereString= QueryBuilder.GetFilters(type); if (whereString.HasValue()) @@ -1229,6 +1233,10 @@ namespace SqlSugar } public ISugarQueryable Select(Expression> expression, bool isAutoFill) { + if (typeof(TResult).IsAnonymousType()) + { + return Select(expression); + } var clone = this.Select(expression).Clone(); //clone.QueryBuilder.LambdaExpressions.Index = QueryBuilder.LambdaExpressions.Index+1; var ps = clone.QueryBuilder; diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/OneToManyNavgateExpression.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/OneToManyNavgateExpression.cs index 8e8c95a4a..19144b814 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/OneToManyNavgateExpression.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/OneToManyNavgateExpression.cs @@ -163,6 +163,7 @@ namespace SqlSugar bPk = queryable.QueryBuilder.Builder.GetTranslationColumnName(bPk); aPk = queryable.QueryBuilder.Builder.GetTranslationColumnName(aPk); var mappingType = Navigat.MappingType; + Check.ExceptionEasy(mappingType == null, "ManyToMany misconfiguration", "多对多配置错误"); var mappingEntity = this.context.EntityMaintenance.GetEntityInfo(mappingType); var mappingTableName=queryable.QueryBuilder.Builder.GetTranslationTableName(mappingEntity.DbTableName); var mappingA = mappingEntity.Columns.First(it => it.PropertyName == Navigat.MappingAId).DbColumnName; @@ -174,7 +175,7 @@ namespace SqlSugar var queryBuilerAB=this.context.Queryable().QueryBuilder; queryBuilerAB.LambdaExpressions.ParameterIndex = 100+this.ParameterIndex; var filters= queryBuilerAB.GetFilters(mappingType); - if (filters.HasValue()) + if (filters.HasValue()&& this.methodCallExpressionResolve?.Context?.SugarContext?.QueryBuilder?.IsDisabledGobalFilter!=true) { aPk += " AND " + filters; if (queryBuilerAB.Parameters != null) @@ -234,9 +235,16 @@ namespace SqlSugar queryable.QueryBuilder.TableShortName = PropertyShortName; } queryable.QueryBuilder.LambdaExpressions.ParameterIndex = 500; + var isClearFilter = false; + if (this.methodCallExpressionResolve?.Context?.SugarContext?.QueryBuilder != null) + { + queryable.QueryBuilder.LambdaExpressions.ParameterIndex=500+ this.methodCallExpressionResolve.Context.SugarContext.QueryBuilder.LambdaExpressions.ParameterIndex; + this.methodCallExpressionResolve.Context.SugarContext.QueryBuilder.LambdaExpressions.ParameterIndex++; + isClearFilter=this.methodCallExpressionResolve.Context.SugarContext.QueryBuilder.IsDisabledGobalFilter; + } var sqlObj = queryable .AS(this.ProPertyEntity.DbTableName) - .Filter(this.ProPertyEntity.Type) + .Filter(isClearFilter?null:this.ProPertyEntity.Type) .WhereIF(!string.IsNullOrEmpty(whereSql), whereSql) .Where($" {name}={ShorName}.{pk} ").Select(MethodName == "Any" ? "1" : " COUNT(1) ").ToSql(); if (sqlObj.Value?.Any() == true)