From a6dedef82184258f41d44a0f26c9f0c904532c08 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Sat, 13 Apr 2019 21:07:35 +0800 Subject: [PATCH] Optimized grammar Join --- .../SqlSugar/Entities/JoinQueryInfo.cs | 51 ++++++++++- .../ResolveItems/NewExpressionResolve.cs | 26 +++++- Src/Asp.Net/SqlSugar/SqlSugarClient.cs | 88 +++++++++++++++++++ 3 files changed, 163 insertions(+), 2 deletions(-) diff --git a/Src/Asp.Net/SqlSugar/Entities/JoinQueryInfo.cs b/Src/Asp.Net/SqlSugar/Entities/JoinQueryInfo.cs index a2d4e3806..aa07be19a 100644 --- a/Src/Asp.Net/SqlSugar/Entities/JoinQueryInfo.cs +++ b/Src/Asp.Net/SqlSugar/Entities/JoinQueryInfo.cs @@ -1,16 +1,65 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Linq.Expressions; using System.Text; namespace SqlSugar { public class JoinQueryInfo { - public JoinType JoinType{ get; set; } + public JoinType JoinType { get; set; } public string TableName { get; set; } public string ShortName { get; set; } public int JoinIndex { get; set; } public string JoinWhere { get; set; } } + public class JoinQueryInfos + { + private JoinQueryInfos() { } + public JoinQueryInfos(JoinType joinType, bool whereExpress) + { + + } + public JoinQueryInfos(JoinType joinType, bool whereExpress, JoinType joinType2, bool whereExpress2) + { + + } + public JoinQueryInfos(JoinType joinType, bool whereExpress, JoinType joinType2, bool whereExpress2, JoinType joinType3, bool whereExpress3) + { + + } + public JoinQueryInfos(JoinType joinType, bool whereExpress, JoinType joinType2, bool whereExpress2, JoinType joinType3, bool whereExpress3, JoinType joinType4, bool whereExpress4) + { + + } + public JoinQueryInfos(JoinType joinType, bool whereExpress, JoinType joinType2, bool whereExpress2, JoinType joinType3, bool whereExpress3, JoinType joinType4, bool whereExpress4, JoinType joinType5, bool whereExpress5) + { + + } + public JoinQueryInfos(JoinType joinType, bool whereExpress, JoinType joinType2, bool whereExpress2, JoinType joinType3, bool whereExpress3, JoinType joinType4, bool whereExpress4, JoinType joinType5, bool whereExpress5, JoinType joinType6, bool whereExpress6) + { + + } + public JoinQueryInfos(JoinType joinType, bool whereExpress, JoinType joinType2, bool whereExpress2, JoinType joinType3, bool whereExpress3, JoinType joinType4, bool whereExpress4, JoinType joinType5, bool whereExpress5, JoinType joinType6, bool whereExpress6, JoinType joinType7, bool whereExpress7) + { + + } + public JoinQueryInfos(JoinType joinType, bool whereExpress, JoinType joinType2, bool whereExpress2, JoinType joinType3, bool whereExpress3, JoinType joinType4, bool whereExpress4, JoinType joinType5, bool whereExpress5, JoinType joinType6, bool whereExpress6, JoinType joinType7, bool whereExpress7, JoinType joinType8, bool whereExpress8) + { + + } + public JoinQueryInfos(JoinType joinType, bool whereExpress, JoinType joinType2, bool whereExpress2, JoinType joinType3, bool whereExpress3, JoinType joinType4, bool whereExpress4, JoinType joinType5, bool whereExpress5, JoinType joinType6, bool whereExpress6, JoinType joinType7, bool whereExpress7, JoinType joinType8, bool whereExpress8, JoinType joinType9, bool whereExpress9) + { + + } + public JoinQueryInfos(JoinType joinType, bool whereExpress, JoinType joinType2, bool whereExpress2, JoinType joinType3, bool whereExpress3, JoinType joinType4, bool whereExpress4, JoinType joinType5, bool whereExpress5, JoinType joinType6, bool whereExpress6, JoinType joinType7, bool whereExpress7, JoinType joinType8, bool whereExpress8, JoinType joinType9, bool whereExpress9, JoinType joinType10, bool whereExpress10) + { + + } + public JoinQueryInfos(JoinType joinType, bool whereExpress, JoinType joinType2, bool whereExpress2, JoinType joinType3, bool whereExpress3, JoinType joinType4, bool whereExpress4, JoinType joinType5, bool whereExpress5, JoinType joinType6, bool whereExpress6, JoinType joinType7, bool whereExpress7, JoinType joinType8, bool whereExpress8, JoinType joinType9, bool whereExpress9, JoinType joinType10, bool whereExpress10, JoinType joinType11, bool whereExpress11) + { + + } + } } diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/NewExpressionResolve.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/NewExpressionResolve.cs index 55f4c6566..c4cd9ccf2 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/NewExpressionResolve.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/NewExpressionResolve.cs @@ -23,7 +23,7 @@ namespace SqlSugar Check.ThrowNotSupportedException(expression.ToString()); break; case ResolveExpressType.SelectSingle: - Check.Exception(expression.Type == UtilConstants.DateType, "ThrowNotSupportedException {0} ",expression.ToString()); + Check.Exception(expression.Type == UtilConstants.DateType, "ThrowNotSupportedException {0} ", expression.ToString()); Select(expression, parameter, true); break; case ResolveExpressType.SelectMultiple: @@ -42,6 +42,30 @@ namespace SqlSugar base.Start(); } break; + case ResolveExpressType.Join: + base.Context.ResolveType = ResolveExpressType.WhereMultiple; + int i = 0; + foreach (var item in expression.Arguments) + { + if (item.Type!=typeof(JoinType)) + { + base.Expression = item; + base.Start(); + } + if (item.Type == typeof(JoinType)) + { + if (i > 0) + { + base.Context.Result.Append("," + item.ToString()+ ","); + } + else + { + base.Context.Result.Append(item.ToString() + ","); + } + ++i; + } + } + break; default: break; } diff --git a/Src/Asp.Net/SqlSugar/SqlSugarClient.cs b/Src/Asp.Net/SqlSugar/SqlSugarClient.cs index 772fd4b5b..859be36dc 100644 --- a/Src/Asp.Net/SqlSugar/SqlSugarClient.cs +++ b/Src/Asp.Net/SqlSugar/SqlSugarClient.cs @@ -140,6 +140,14 @@ namespace SqlSugar this.CreateQueryJoin(joinExpression, types, queryable); return queryable; } + public virtual ISugarQueryable Queryable(Expression> joinExpression) + { + InitMppingInfo(); + var types = new Type[] { typeof(T2) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateQueryJoin(joinExpression, types, queryable); + return queryable; + } public virtual ISugarQueryable Queryable(Expression> joinExpression) { InitMppingInfo(); @@ -148,6 +156,14 @@ namespace SqlSugar this.CreateQueryJoin(joinExpression, types, queryable); return queryable; } + public virtual ISugarQueryable Queryable(Expression> joinExpression) + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateQueryJoin(joinExpression, types, queryable); + return queryable; + } public virtual ISugarQueryable Queryable(Expression> joinExpression) { InitMppingInfo(); @@ -156,6 +172,14 @@ namespace SqlSugar this.CreateQueryJoin(joinExpression, types, queryable); return queryable; } + public virtual ISugarQueryable Queryable(Expression> joinExpression) + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3), typeof(T4) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateQueryJoin(joinExpression, types, queryable); + return queryable; + } public virtual ISugarQueryable Queryable(Expression> joinExpression) { InitMppingInfo(); @@ -164,6 +188,14 @@ namespace SqlSugar this.CreateQueryJoin(joinExpression, types, queryable); return queryable; } + public virtual ISugarQueryable Queryable(Expression> joinExpression) + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateQueryJoin(joinExpression, types, queryable); + return queryable; + } public virtual ISugarQueryable Queryable(Expression> joinExpression) { InitMppingInfo(); @@ -172,6 +204,14 @@ namespace SqlSugar this.CreateQueryJoin(joinExpression, types, queryable); return queryable; } + public virtual ISugarQueryable Queryable(Expression> joinExpression) + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateQueryJoin(joinExpression, types, queryable); + return queryable; + } public virtual ISugarQueryable Queryable(Expression> joinExpression) { InitMppingInfo(); @@ -180,6 +220,14 @@ namespace SqlSugar this.CreateQueryJoin(joinExpression, types, queryable); return queryable; } + public virtual ISugarQueryable Queryable(Expression> joinExpression) + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateQueryJoin(joinExpression, types, queryable); + return queryable; + } public virtual ISugarQueryable Queryable(Expression> joinExpression) { InitMppingInfo(); @@ -188,6 +236,14 @@ namespace SqlSugar this.CreateQueryJoin(joinExpression, types, queryable); return queryable; } + public virtual ISugarQueryable Queryable(Expression> joinExpression) + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateQueryJoin(joinExpression, types, queryable); + return queryable; + } #region 9-12 public virtual ISugarQueryable Queryable(Expression> joinExpression) { @@ -197,6 +253,14 @@ namespace SqlSugar this.CreateQueryJoin(joinExpression, types, queryable); return queryable; } + public virtual ISugarQueryable Queryable(Expression> joinExpression) + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateQueryJoin(joinExpression, types, queryable); + return queryable; + } public virtual ISugarQueryable Queryable(Expression> joinExpression) { InitMppingInfo(); @@ -205,6 +269,14 @@ namespace SqlSugar this.CreateQueryJoin(joinExpression, types, queryable); return queryable; } + public virtual ISugarQueryable Queryable(Expression> joinExpression) + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9), typeof(T10) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateQueryJoin(joinExpression, types, queryable); + return queryable; + } public virtual ISugarQueryable Queryable(Expression> joinExpression) { InitMppingInfo(); @@ -213,6 +285,14 @@ namespace SqlSugar this.CreateQueryJoin(joinExpression, types, queryable); return queryable; } + public virtual ISugarQueryable Queryable(Expression> joinExpression) + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9), typeof(T10), typeof(T11) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateQueryJoin(joinExpression, types, queryable); + return queryable; + } public virtual ISugarQueryable Queryable(Expression> joinExpression) { InitMppingInfo(); @@ -221,6 +301,14 @@ namespace SqlSugar this.CreateQueryJoin(joinExpression, types, queryable); return queryable; } + public virtual ISugarQueryable Queryable(Expression> joinExpression) + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9), typeof(T10), typeof(T11), typeof(T12) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateQueryJoin(joinExpression, types, queryable); + return queryable; + } #endregion public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() {