From bb692d5b7675c80e4b9e5ee6dc3662ea640dd49a Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Tue, 26 Sep 2023 16:48:16 +0800 Subject: [PATCH] Synchronization code --- .../QueryableProvider/QueryableHelper.cs | 2 +- .../Subquery/Items/SubAsWithAttr.cs | 55 +++++++++++++++++++ .../ExpressionsToSql/Subquery/SubTools.cs | 3 +- .../ExpressionsToSql/Subquery/Subquerable.cs | 5 ++ .../Subquery/SubqueryableN.cs | 32 +++++++++++ 5 files changed, 95 insertions(+), 2 deletions(-) create mode 100644 Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/SubAsWithAttr.cs diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableHelper.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableHelper.cs index 9771e14fd..dc9fc9d40 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableHelper.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableHelper.cs @@ -1335,7 +1335,7 @@ namespace SqlSugar } } - private string GetTableName(EntityInfo entity, string tableName) + internal string GetTableName(EntityInfo entity, string tableName) { var oldTableName = tableName; var attr = entity?.Type?.GetCustomAttribute(); diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/SubAsWithAttr.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/SubAsWithAttr.cs new file mode 100644 index 000000000..b813b4fb6 --- /dev/null +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/SubAsWithAttr.cs @@ -0,0 +1,55 @@ +using System; +using System.Collections.Generic; +using System.Linq.Expressions; +using System.Linq; +using System.Text; + +namespace SqlSugar +{ + public class SubAsWithAttr : ISubOperation + { + public bool HasWhere + { + get; set; + } + + public string Name + { + get + { + return "AsWithAttr"; + } + } + + public Expression Expression + { + get; set; + } + + + public int Sort + { + get + { + return 200; + } + } + + public ExpressionContext Context + { + get; set; + } + + public string GetValue(Expression expression = null) + { + var exp = expression as MethodCallExpression; + var type = exp.Type.GetGenericArguments()[0]; + var db = this.Context.SugarContext.Context; + var entityInfo= db.EntityMaintenance.GetEntityInfo(type); + var tableName = entityInfo.DbTableName; + var queryable= ((QueryableProvider)(db.Queryable())); + var expString = queryable.GetTableName(entityInfo, tableName); + return "$SubAs:" + expString; + } + } +} diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/SubTools.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/SubTools.cs index ff307d1b2..3fc66cb48 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/SubTools.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/SubTools.cs @@ -39,7 +39,8 @@ namespace SqlSugar new SubSelectStringJoin{ Context=Context }, new SubDistinctCount{ Context=Context }, new SubToList{ Context=Context}, - new SubFirst(){ Context=Context } + new SubFirst(){ Context=Context }, + new SubAsWithAttr(){ Context=Context } }; } diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Subquerable.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Subquerable.cs index a3b2a26ce..a84a930c7 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Subquerable.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Subquerable.cs @@ -219,5 +219,10 @@ namespace SqlSugar { return default(TResult); } + + public Subqueryable AsWithAttr() + { + return this; + } } } diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/SubqueryableN.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/SubqueryableN.cs index 768651750..35a0bf657 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/SubqueryableN.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/SubqueryableN.cs @@ -9,6 +9,10 @@ namespace SqlSugar { } public class Subqueryable : Subqueryable where T1 : class, new() { + public new Subqueryable AsWithAttr() + { + return this; + } public Subqueryable InnerJoin(Func expression) { return new Subqueryable(); @@ -68,6 +72,10 @@ namespace SqlSugar } public class Subqueryable : Subqueryable where T1 : class, new() { + public new Subqueryable AsWithAttr() + { + return this; + } public Subqueryable InnerJoin(Func expression) { return new Subqueryable(); @@ -123,6 +131,10 @@ namespace SqlSugar } public class Subqueryable : Subqueryable where T1 : class, new() { + public new Subqueryable AsWithAttr() + { + return this; + } public Subqueryable InnerJoin(Func expression) { return new Subqueryable(); @@ -174,6 +186,10 @@ namespace SqlSugar } public class Subqueryable : Subqueryable where T1 : class, new() { + public new Subqueryable AsWithAttr() + { + return this; + } public new Subqueryable Where(List conditionals) { return this; @@ -226,6 +242,10 @@ namespace SqlSugar } public class Subqueryable : Subqueryable where T1 : class, new() { + public new Subqueryable AsWithAttr() + { + return this; + } public new Subqueryable Where(List conditionals) { return this; @@ -274,6 +294,10 @@ namespace SqlSugar } public class Subqueryable : Subqueryable where T1 : class, new() { + public new Subqueryable AsWithAttr() + { + return this; + } public new Subqueryable Where(List conditionals) { return this; @@ -386,6 +410,10 @@ namespace SqlSugar } public class Subqueryable : Subqueryable where T1 : class, new() { + public new Subqueryable AsWithAttr() + { + return this; + } public new Subqueryable Where(List conditionals) { return this; @@ -486,6 +514,10 @@ namespace SqlSugar } public class Subqueryable : Subqueryable where T1 : class, new() { + public new Subqueryable AsWithAttr() + { + return this; + } public new Subqueryable Where(List conditionals) { return this;