From 881ede4362fd945091e8d7a09c1db1a17fc0d8ca Mon Sep 17 00:00:00 2001 From: sunkaixuna <610262374@qq.com> Date: Sun, 17 Oct 2021 11:20:53 +0800 Subject: [PATCH] Update gobal filter --- .../SqlBuilderProvider/QueryBuilder.cs | 46 ++++++++++++------- 1 file changed, 29 insertions(+), 17 deletions(-) diff --git a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs index bbe53da77..7c578d414 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs @@ -331,36 +331,30 @@ namespace SqlSugar BindingFlags flag = BindingFlags.Instance | BindingFlags.NonPublic; Type type = item.GetType(); PropertyInfo field = type.GetProperty("exp", flag); - Type ChildType = type.GetProperty("type", flag).GetValue(item,null) as Type; + Type ChildType = type.GetProperty("type", flag).GetValue(item, null) as Type; var entityInfo = this.Context.EntityMaintenance.GetEntityInfo(ChildType); - var exp=field.GetValue(item,null) as Expression; + var exp = field.GetValue(item, null) as Expression; var isMain = ChildType == this.EntityType; var isSingle = IsSingle(); - if (ChildType != this.EntityType&&isSingle) - { - return; - } - var expValue = GetExpressionValue(exp, isSingle ? ResolveExpressType.WhereSingle : ResolveExpressType.WhereMultiple); - var sql = expValue.GetResultString(); var itName = (exp as LambdaExpression).Parameters[0].Name; itName = this.Builder.GetTranslationColumnName(itName) + "."; var isEasyJoin = this.EasyJoinInfos.Count > 0; - if (WhereInfos.Count == 0) - { - sql =( " WHERE " + sql); - }else - { - sql = (" AND " + sql); - } + + string sql = ""; if (isSingle) { - + if (ChildType != this.EntityType && isSingle) + { + return; + } + sql = GetSql(exp, isSingle); } else if (isMain) { if (TableShortName == null) return; var shortName = this.Builder.GetTranslationColumnName(TableShortName) + "."; + sql = GetSql(exp, isSingle); sql = sql.Replace(itName, shortName); } else if (isEasyJoin) @@ -368,11 +362,12 @@ namespace SqlSugar var easyInfo = EasyJoinInfos.FirstOrDefault(it => it.Value.Equals(entityInfo.DbTableName, StringComparison.CurrentCultureIgnoreCase) || it.Value.Equals(entityInfo.EntityName, StringComparison.CurrentCultureIgnoreCase)); - if (easyInfo.Key==null) + if (easyInfo.Key == null) { return; } var shortName = this.Builder.GetTranslationColumnName(easyInfo.Key.Trim()) + "."; + sql = GetSql(exp, isSingle); sql = sql.Replace(itName, shortName); } else @@ -385,11 +380,28 @@ namespace SqlSugar return; } var shortName = this.Builder.GetTranslationColumnName(easyInfo.ShortName.Trim()) + "."; + sql = GetSql(exp, isSingle); sql = sql.Replace(itName, shortName); } WhereInfos.Add(sql); } + private string GetSql(Expression exp, bool isSingle) + { + var expValue = GetExpressionValue(exp, isSingle ? ResolveExpressType.WhereSingle : ResolveExpressType.WhereMultiple); + var sql = expValue.GetResultString(); + if (WhereInfos.Count == 0) + { + sql = (" WHERE " + sql); + } + else + { + sql = (" AND " + sql); + } + + return sql; + } + public virtual string GetExternalOrderBy(string externalOrderBy) { return Regex.Replace(externalOrderBy, @"\[\w+\]\.", "");