diff --git a/OrmTest/Program.cs b/OrmTest/Program.cs index b95f9982d..34d94e6b1 100644 --- a/OrmTest/Program.cs +++ b/OrmTest/Program.cs @@ -19,11 +19,11 @@ namespace OrmTest { //Unit Test int eachCount = 1; - //new Field(eachCount).Init(); - //new Where(eachCount).Init(); - //new Method(eachCount).Init(); - //new JoinQuery(eachCount).Init(); - //new SingleQuery(eachCount).Init(); + new Field(eachCount).Init(); + new Where(eachCount).Init(); + new Method(eachCount).Init(); + new JoinQuery(eachCount).Init(); + new SingleQuery(eachCount).Init(); new SelectQuery(eachCount).Init(); diff --git a/OrmTest/UnitTest/Query/SelectQuery.cs b/OrmTest/UnitTest/Query/SelectQuery.cs index 395adc8a1..a27fcbbf3 100644 --- a/OrmTest/UnitTest/Query/SelectQuery.cs +++ b/OrmTest/UnitTest/Query/SelectQuery.cs @@ -44,7 +44,7 @@ namespace OrmTest.UnitTest .GroupBy(it=>it.Id) .OrderBy(it=>it.Id) .Select(it=>it.Id).ToSql(); - base.Check("SELECT [Id] FROM [Student] WITH(NOLOCK) GROUP BY [Id] ORDER BY [Id] ASC", null, gos.Key,null, "基本查询出错"); + base.Check("SELECT [Id] FROM [Student] WITH(NOLOCK) GROUP BY [Id] ORDER BY [Id] ASC", null, gos.Key,null, "基本查询出错"); var dr3 = db.Queryable().Select(it => new ViewModelStudent2 { Name=it.Name,Student=it}).ToList(); var dr0 = db.Queryable().Select(it => new { id=it.Id,w=new { x=it } }).ToList(); var dr1 = db.Queryable().Select(it => new { newid = it.Id }).ToList(); diff --git a/OrmTest/UnitTest/Query/SingleQuery.cs b/OrmTest/UnitTest/Query/SingleQuery.cs index 2187006d1..1df83b549 100644 --- a/OrmTest/UnitTest/Query/SingleQuery.cs +++ b/OrmTest/UnitTest/Query/SingleQuery.cs @@ -29,7 +29,76 @@ namespace OrmTest.UnitTest { using (var db = GetInstance()) { - var list = db.Queryable().Where(st => st.Id > 0).ToList(); + var s1 = db.Queryable().ToSql(); + base.Check("SELECT [Id],[SchoolId],[Name],[CreateTime] FROM [Student]", null, s1.Key, null, "s1 Error"); + + var s2 = db.Queryable().With(SqlWith.NoLock).ToSql(); + base.Check("SELECT [Id],[SchoolId],[Name],[CreateTime] FROM [Student] WITH(NOLOCK)", null, s2.Key, null, "s2 Error"); + + var s3 = db.Queryable().OrderBy(it=>it.Id).ToSql(); + base.Check("SELECT [Id],[SchoolId],[Name],[CreateTime] FROM [Student] ORDER BY [Id] ASC", null, s3.Key, null, "s3 Error"); + + var s4 = db.Queryable().OrderBy(it => it.Id).Take(3).ToSql(); + base.Check(@"WITH PageTable AS( + SELECT [Id],[SchoolId],[Name],[CreateTime] FROM [Student] + ) + SELECT * FROM (SELECT *,ROW_NUMBER() OVER(ORDER BY [Id] ASC) AS RowIndex FROM PageTable ) T WHERE RowIndex BETWEEN 1 AND 3", null, s4.Key, null, "s4 Error"); + + var s5 = db.Queryable().OrderBy(it => it.Id).Skip(3).ToSql(); + base.Check(@"WITH PageTable AS( + SELECT [Id],[SchoolId],[Name],[CreateTime] FROM [Student] + ) + SELECT * FROM (SELECT *,ROW_NUMBER() OVER(ORDER BY [Id] ASC) AS RowIndex FROM PageTable ) T WHERE RowIndex BETWEEN 4 AND 9223372036854775807", null, s5.Key,null, "s5 Error"); + + int pageIndex = 2; + int pageSize = 10; + var s6 = db.Queryable().OrderBy(it => it.Id,OrderByType.Desc).Skip((pageIndex-1)*pageSize).Take(pageSize*pageIndex).ToSql(); + base.Check(@"WITH PageTable AS( + SELECT [Id],[SchoolId],[Name],[CreateTime] FROM [Student] + ) + SELECT * FROM (SELECT *,ROW_NUMBER() OVER(ORDER BY [Id] DESC) AS RowIndex FROM PageTable ) T WHERE RowIndex BETWEEN 11 AND 20", null, s6.Key, null, "s6 Error"); + + + int studentCount=db.Database.GetInt("select count(1) from Student"); + var countIsSuccess=db.Queryable().Count()== studentCount; + if (!countIsSuccess) { + throw new Exception("countIsSuccess Error"); + } + + var s7 = db.Queryable().OrderBy(it => it.Id, OrderByType.Desc).Skip((pageIndex - 1) * pageSize).Take(pageSize * pageIndex).ToPageList(pageIndex,pageSize,ref studentCount); + countIsSuccess = studentCount == db.Queryable().OrderBy(it => it.Id, OrderByType.Desc).Skip((pageIndex - 1) * pageSize).Take(pageSize * pageIndex).Count(); + if (!countIsSuccess) + { + throw new Exception("s7 Error"); + } + + int studentMin = db.Database.GetInt("select min(id) from Student"); + var minIsSuccess = db.Queryable().Min(it=>it.Id) == studentMin; + if (!minIsSuccess) + { + throw new Exception("minIsSuccess Error"); + } + + int studentMax = db.Database.GetInt("select max(id) from Student"); + var maxIsSuccess = db.Queryable().Max(it => it.Id) == studentMax; + if (!maxIsSuccess) + { + throw new Exception("maxIsSuccess Error"); + } + + int studentAvg = db.Database.GetInt("select avg(id) from Student"); + var avgIsSuccess = db.Queryable().Avg(it => it.Id) == studentAvg; + if (!maxIsSuccess) + { + throw new Exception("avgIsSuccess Error"); + } + + int studentSum = db.Database.GetInt("select sum(id) from Student"); + var sumIsSuccess = db.Queryable().Sum(it => it.Id) == studentSum; + if (!sumIsSuccess) + { + throw new Exception("sumIsSuccess Error"); + } } } diff --git a/SqlSugar/Abstract/DbProvider/DbBindProvider/DbBindProvider.cs b/SqlSugar/Abstract/DbProvider/DbBindProvider/DbBindProvider.cs index 3bd7ee6ea..75b293759 100644 --- a/SqlSugar/Abstract/DbProvider/DbBindProvider/DbBindProvider.cs +++ b/SqlSugar/Abstract/DbProvider/DbBindProvider/DbBindProvider.cs @@ -67,7 +67,7 @@ namespace SqlSugar } else if (type.IsValueType || type == PubConst.StringType) { - return GetKeyValueList(type, dataReader); + return GetValueTypeList(type, dataReader); } else if (type.IsArray) { diff --git a/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index ad140ab28..57c35c990 100644 --- a/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -16,31 +16,38 @@ namespace SqlSugar public IDb Db { get { return Context.Database; } } public IDbBind Bind { get { return this.Db.DbBind; } } public ISqlBuilder SqlBuilder { get; set; } + public QueryBuilder QueryBuilder + { + get + { + return this.SqlBuilder.QueryBuilder; + } + } public void Clear() { - SqlBuilder.LambadaQueryBuilder.Clear(); + QueryBuilder.Clear(); } public ISugarQueryable AddParameters(object whereObj) { if (whereObj != null) - this.SqlBuilder.LambadaQueryBuilder.QueryPars.AddRange(Context.Database.GetParameters(whereObj)); + QueryBuilder.QueryPars.AddRange(Context.Database.GetParameters(whereObj)); return this; } public ISugarQueryable AddParameters(SugarParameter[] pars) { - this.SqlBuilder.LambadaQueryBuilder.QueryPars.AddRange(pars); + QueryBuilder.QueryPars.AddRange(pars); return this; } public ISugarQueryable AddJoinInfo(string tableName, string shortName, string joinWhere, JoinType type = JoinType.Left) { - SqlBuilder.LambadaQueryBuilder.JoinIndex = +1; - SqlBuilder.LambadaQueryBuilder.JoinQueryInfos + QueryBuilder.JoinIndex = +1; + QueryBuilder.JoinQueryInfos .Add(new JoinQueryInfo() { - JoinIndex = SqlBuilder.LambadaQueryBuilder.JoinIndex, + JoinIndex = QueryBuilder.JoinIndex, TableName = tableName, ShortName = shortName, JoinType = type, @@ -61,10 +68,10 @@ namespace SqlSugar } public ISugarQueryable Where(string whereString, object whereObj = null) { - var whereValue = SqlBuilder.LambadaQueryBuilder.WhereInfos; + var whereValue = QueryBuilder.WhereInfos; whereValue.Add(SqlBuilder.AppendWhereOrAnd(whereValue.Count == 0, whereString)); if (whereObj != null) - this.SqlBuilder.LambadaQueryBuilder.QueryPars.AddRange(Context.Database.GetParameters(whereObj)); + QueryBuilder.QueryPars.AddRange(Context.Database.GetParameters(whereObj)); return this; } public ISugarQueryable Where(Expression> expression) @@ -148,8 +155,8 @@ namespace SqlSugar Where("1=2 "); return this; } - string filed = Context.Database.DbMaintenance.GetSinglePrimaryFiled(this.SqlBuilder.GetTableName(typeof(T).Name)); - string shortName = this.SqlBuilder.LambadaQueryBuilder.TableShortName == null ? null : (this.SqlBuilder.LambadaQueryBuilder.TableShortName + "."); + string filed = Context.Database.DbMaintenance.GetSinglePrimaryFiled(this.SqlBuilder.GetTranslationTableName(typeof(T).Name)); + string shortName = QueryBuilder.TableShortName == null ? null : (QueryBuilder.TableShortName + "."); filed = shortName + filed; return In(filed, pkValues); } @@ -167,11 +174,11 @@ namespace SqlSugar { if (inValues.GetType().IsArray) { - var whereIndex = this.SqlBuilder.LambadaQueryBuilder.WhereIndex; + var whereIndex = QueryBuilder.WhereIndex; string parameterName = this.SqlBuilder.SqlParameterKeyWord + "InPara" + whereIndex; - this.Where(string.Format("{0} = {1} ", filed, parameterName)); + this.Where(string.Format(QueryBuilder.InTemplate, filed, parameterName)); this.AddParameters(new SqlParameter(parameterName, inValues[0])); - this.SqlBuilder.LambadaQueryBuilder.WhereIndex++; + QueryBuilder.WhereIndex++; } else { @@ -183,7 +190,7 @@ namespace SqlSugar values.Add(item.ToString().ToSqlValue()); } } - this.Where(string.Format("{0} in ({1}) ", filed, string.Join(",", values))); + this.Where(string.Format(QueryBuilder.InTemplate, filed, string.Join(",", values))); } } else @@ -196,7 +203,7 @@ namespace SqlSugar values.Add(item.ToString().ToSqlValue()); } } - this.Where(string.Format("{0} in ({1}) ", filed, string.Join(",", values))); + this.Where(string.Format(QueryBuilder.InTemplate, filed, string.Join(",", values))); } return this; @@ -204,20 +211,20 @@ namespace SqlSugar public ISugarQueryable In(Expression> expression, params FieldType[] inValues) { - var isSingle = SqlBuilder.LambadaQueryBuilder.IsSingle(); - var lamResult = SqlBuilder.LambadaQueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); return In(fieldName, inValues); } public ISugarQueryable OrderBy(string orderFileds) { - var orderByValue = SqlBuilder.LambadaQueryBuilder.OrderByValue; - if (SqlBuilder.LambadaQueryBuilder.OrderByValue.IsNullOrEmpty()) + var orderByValue = QueryBuilder.OrderByValue; + if (QueryBuilder.OrderByValue.IsNullOrEmpty()) { - SqlBuilder.LambadaQueryBuilder.OrderByValue = "ORDER BY "; + QueryBuilder.OrderByValue = QueryBuilder.OrderByTemplate; } - SqlBuilder.LambadaQueryBuilder.OrderByValue += string.IsNullOrEmpty(orderByValue) ? orderFileds : ("," + orderFileds); + QueryBuilder.OrderByValue += string.IsNullOrEmpty(orderByValue) ? orderFileds : ("," + orderFileds); return this; } @@ -241,35 +248,35 @@ namespace SqlSugar public ISugarQueryable GroupBy(string groupFileds) { - var croupByValue = SqlBuilder.LambadaQueryBuilder.GroupByValue; - if (SqlBuilder.LambadaQueryBuilder.GroupByValue.IsNullOrEmpty()) + var croupByValue = QueryBuilder.GroupByValue; + if (QueryBuilder.GroupByValue.IsNullOrEmpty()) { - SqlBuilder.LambadaQueryBuilder.GroupByValue = "GROUP BY "; + QueryBuilder.GroupByValue = QueryBuilder.GroupByTemplate; } - SqlBuilder.LambadaQueryBuilder.GroupByValue += string.IsNullOrEmpty(croupByValue) ? groupFileds : ("," + groupFileds); + QueryBuilder.GroupByValue += string.IsNullOrEmpty(croupByValue) ? groupFileds : ("," + groupFileds); return this; } public ISugarQueryable Skip(int num) { - SqlBuilder.LambadaQueryBuilder.Skip = num; + QueryBuilder.Skip = num; return this; } public ISugarQueryable Take(int num) { - SqlBuilder.LambadaQueryBuilder.Take = num; + QueryBuilder.Take = num; return this; } public T Single() { - if (SqlBuilder.LambadaQueryBuilder.OrderByValue.IsNullOrEmpty()) + if (QueryBuilder.OrderByValue.IsNullOrEmpty()) { - SqlBuilder.LambadaQueryBuilder.OrderByValue = " ORDER BY GETDATE()"; + QueryBuilder.OrderByValue = QueryBuilder.DefaultOrderByTemplate; } - SqlBuilder.LambadaQueryBuilder.Skip = 0; - SqlBuilder.LambadaQueryBuilder.Take = 1; + QueryBuilder.Skip = 0; + QueryBuilder.Take = 1; var reval = this.ToList(); if (reval.IsValuable()) { @@ -289,12 +296,12 @@ namespace SqlSugar public T First() { - if (SqlBuilder.LambadaQueryBuilder.OrderByValue.IsNullOrEmpty()) + if (QueryBuilder.OrderByValue.IsNullOrEmpty()) { - SqlBuilder.LambadaQueryBuilder.OrderByValue = " ORDER BY GETDATE()"; + QueryBuilder.OrderByValue = QueryBuilder.DefaultOrderByTemplate; } - SqlBuilder.LambadaQueryBuilder.Skip = 0; - SqlBuilder.LambadaQueryBuilder.Take = 1; + QueryBuilder.Skip = 0; + QueryBuilder.Take = 1; var reval = this.ToList(); if (reval.IsValuable()) { @@ -361,75 +368,75 @@ namespace SqlSugar var reval = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); reval.Context = this.Context; reval.SqlBuilder = this.SqlBuilder; - SqlBuilder.LambadaQueryBuilder.SelectValue = selectValue; + QueryBuilder.SelectValue = selectValue; return reval; } public ISugarQueryable Select(string selectValue) { - SqlBuilder.LambadaQueryBuilder.SelectValue = selectValue; + QueryBuilder.SelectValue = selectValue; return this; } public int Count() { - SqlBuilder.LambadaQueryBuilder.IsCount = true; - var sql = SqlBuilder.LambadaQueryBuilder.ToSqlString(); - var reval = Context.Database.GetInt(sql, SqlBuilder.LambadaQueryBuilder.QueryPars.ToArray()); - SqlBuilder.LambadaQueryBuilder.IsCount = false; + QueryBuilder.IsCount = true; + var sql = QueryBuilder.ToSqlString(); + var reval = Context.Database.GetInt(sql, QueryBuilder.QueryPars.ToArray()); + QueryBuilder.IsCount = false; return reval; } public TResult Max(string maxField) { - this.Select("Max("+ maxField + ")"); + this.Select(string.Format(QueryBuilder.MaxTemplate, maxField)); var reval = this._ToList().SingleOrDefault(); return reval; } - public TResult Max(Expression> expression) + public TResult Max(Expression> expression) { - var isSingle = SqlBuilder.LambadaQueryBuilder.IsSingle(); - var lamResult = SqlBuilder.LambadaQueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); return Max(lamResult.GetResultString()); } public TResult Min(string minField) { - this.Select("Min("+ minField + ")"); + this.Select(string.Format(QueryBuilder.MinTemplate, minField)); var reval = this._ToList().SingleOrDefault(); return reval; } - public TResult Min(Expression> expression) + public TResult Min(Expression> expression) { - var isSingle = SqlBuilder.LambadaQueryBuilder.IsSingle(); - var lamResult = SqlBuilder.LambadaQueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); return Min(lamResult.GetResultString()); } public TResult Sum(string sumField) { - this.Select("Sum(" + sumField + ")"); + this.Select(string.Format(QueryBuilder.SumTemplate, sumField)); var reval = this._ToList().SingleOrDefault(); return reval; } - public TResult Sum(Expression> expression) + public TResult Sum(Expression> expression) { - var isSingle = SqlBuilder.LambadaQueryBuilder.IsSingle(); - var lamResult = SqlBuilder.LambadaQueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); return Sum(lamResult.GetResultString()); } public TResult Avg(string avgField) { - this.Select("Sum(" + avgField + ")"); + this.Select(string.Format(QueryBuilder.AvgTemplate, avgField)); var reval = this._ToList().SingleOrDefault(); return reval; } - public TResult Avg(Expression> expression) + public TResult Avg(Expression> expression) { - var isSingle = SqlBuilder.LambadaQueryBuilder.IsSingle(); - var lamResult = SqlBuilder.LambadaQueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); return Avg(lamResult.GetResultString()); } public List ToList() @@ -444,23 +451,23 @@ namespace SqlSugar public string ToJsonPage(int pageIndex, int pageSize) { - return this.Context.RewritableMethods.SerializeObject(this.ToPageList(pageIndex,pageSize)); + return this.Context.RewritableMethods.SerializeObject(this.ToPageList(pageIndex, pageSize)); } public string ToJsonPage(int pageIndex, int pageSize, ref int totalNumber) { - return this.Context.RewritableMethods.SerializeObject(this.ToPageList(pageIndex, pageSize,ref totalNumber)); + return this.Context.RewritableMethods.SerializeObject(this.ToPageList(pageIndex, pageSize, ref totalNumber)); } public KeyValuePair> ToSql() { - string sql = SqlBuilder.LambadaQueryBuilder.ToSqlString(); - return new KeyValuePair>(sql, SqlBuilder.LambadaQueryBuilder.QueryPars); + string sql = QueryBuilder.ToSqlString(); + return new KeyValuePair>(sql, QueryBuilder.QueryPars); } public ISugarQueryable With(string withString) { - SqlBuilder.LambadaQueryBuilder.TableWithString = withString; + QueryBuilder.TableWithString = withString; return this; } @@ -475,24 +482,23 @@ namespace SqlSugar { if (pageIndex == 0) pageIndex = 1; - SqlBuilder.LambadaQueryBuilder.Skip = (pageIndex - 1) * pageSize; - SqlBuilder.LambadaQueryBuilder.Take = pageSize; + QueryBuilder.Skip = (pageIndex - 1) * pageSize; + QueryBuilder.Take = pageSize; return ToDataTable(); - } public DataTable ToDataTablePage(int pageIndex, int pageSize, ref int totalNumber) { totalNumber = this.Count(); - return ToDataTablePage(pageIndex,pageSize); + return ToDataTablePage(pageIndex, pageSize); } public List ToPageList(int pageIndex, int pageSize) { if (pageIndex == 0) pageIndex = 1; - SqlBuilder.LambadaQueryBuilder.Skip = (pageIndex - 1) * pageSize; - SqlBuilder.LambadaQueryBuilder.Take = pageSize; + QueryBuilder.Skip = (pageIndex - 1) * pageSize; + QueryBuilder.Take = pageSize; return ToList(); } @@ -509,27 +515,27 @@ namespace SqlSugar var reval = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); reval.Context = this.Context; reval.SqlBuilder = this.SqlBuilder; - reval.SqlBuilder.LambadaQueryBuilder.QueryPars = this.SqlBuilder.LambadaQueryBuilder.QueryPars; - reval.SqlBuilder.LambadaQueryBuilder.SelectValue = expression; + reval.SqlBuilder.QueryBuilder.QueryPars = QueryBuilder.QueryPars; + reval.SqlBuilder.QueryBuilder.SelectValue = expression; return reval; } protected void _Where(Expression expression) { - var isSingle = SqlBuilder.LambadaQueryBuilder.IsSingle(); - var result = SqlBuilder.LambadaQueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.WhereSingle : ResolveExpressType.WhereMultiple); - SqlBuilder.LambadaQueryBuilder.WhereInfos.Add(SqlBuilder.AppendWhereOrAnd(SqlBuilder.LambadaQueryBuilder.WhereInfos.IsNullOrEmpty(), result.GetResultString())); + var isSingle = QueryBuilder.IsSingle(); + var result = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.WhereSingle : ResolveExpressType.WhereMultiple); + QueryBuilder.WhereInfos.Add(SqlBuilder.AppendWhereOrAnd(QueryBuilder.WhereInfos.IsNullOrEmpty(), result.GetResultString())); } protected ISugarQueryable _OrderBy(Expression expression, OrderByType type = OrderByType.Asc) { - var isSingle = SqlBuilder.LambadaQueryBuilder.IsSingle(); - var lamResult = SqlBuilder.LambadaQueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); - OrderBy(lamResult.GetResultString() + " " + type.ToString().ToUpper()); + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + OrderBy(lamResult.GetResultString() + PubConst.Space + type.ToString().ToUpper()); return this; } protected ISugarQueryable _GroupBy(Expression expression) { - var isSingle = SqlBuilder.LambadaQueryBuilder.IsSingle(); - var lamResult = SqlBuilder.LambadaQueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); GroupBy(lamResult.GetResultString()); return this; } @@ -537,7 +543,7 @@ namespace SqlSugar private List _ToList() { var sqlObj = this.ToSql(); - var isComplexModel = Regex.IsMatch(sqlObj.Key, @"AS \[\w+\.\w+\]"); + var isComplexModel = QueryBuilder.IsComplexModel(sqlObj.Key); using (var dataReader = this.Db.GetDataReader(sqlObj.Key, sqlObj.Value.ToArray())) { var tType = typeof(TResult); @@ -547,7 +553,7 @@ namespace SqlSugar } else { - var reval = this.Bind.DataReaderToList(tType, dataReader, SqlBuilder.LambadaQueryBuilder.SelectCacheKey); + var reval = this.Bind.DataReaderToList(tType, dataReader, QueryBuilder.SelectCacheKey); return reval; } } diff --git a/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/DeleteBuilder.cs b/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/DeleteBuilder.cs index d82e90fcc..15f18a2ea 100644 --- a/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/DeleteBuilder.cs +++ b/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/DeleteBuilder.cs @@ -19,7 +19,7 @@ namespace SqlSugar } } - public StringBuilder Sql + public StringBuilder sql { get { diff --git a/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/InsertBuilder.cs b/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/InsertBuilder.cs index 6fd1d6749..96d0f8227 100644 --- a/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/InsertBuilder.cs +++ b/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/InsertBuilder.cs @@ -18,7 +18,7 @@ namespace SqlSugar } } - public StringBuilder Sql + public StringBuilder sql { get { diff --git a/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/LambadaQueryBuilder.cs b/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/QueryBuilder.cs similarity index 69% rename from SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/LambadaQueryBuilder.cs rename to SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/QueryBuilder.cs index d5a2c1be0..6d31cdc61 100644 --- a/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/LambadaQueryBuilder.cs +++ b/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/QueryBuilder.cs @@ -4,12 +4,14 @@ using System.Data.SqlClient; using System.Linq; using System.Linq.Expressions; using System.Text; +using System.Text.RegularExpressions; + namespace SqlSugar { - public abstract class LambadaQueryBuilder : IDMLBuilder + public abstract class QueryBuilder : IDMLBuilder { - public LambadaQueryBuilder() + public QueryBuilder() { this.QueryPars = new List(); } @@ -21,7 +23,7 @@ namespace SqlSugar #endregion #region Service object - public StringBuilder Sql { get; set; } + public StringBuilder sql { get; set; } public SqlSugarClient Context { get; set; } public ILambdaExpressions LambdaExpressions { get; set; } public ISqlBuilder Builder { get; set; } @@ -83,25 +85,79 @@ namespace SqlSugar { get { - return "SELECT {0} FROM {1} {2} {3} {4}"; + return "SELECT {0} FROM {1}{2}{3}{4} "; } } public virtual string JoinTemplate { get { - return " {0} JOIN {1} {2} ON {3} "; + return "{0}JOIN {1}{2}ON {3} "; } } public virtual string PageTempalte { get { - return @" - WITH PageTable AS( + return @"WITH PageTable AS( {0} - ) - SELECT * FROM (SELECT *,ROW_NUMBER() OVER({1}) AS RowIndex FROM PageTable ) T BETWEEN {2} AND {3}"; + ) + SELECT * FROM (SELECT *,ROW_NUMBER() OVER({1}) AS RowIndex FROM PageTable ) T WHERE RowIndex BETWEEN {2} AND {3}"; + } + } + public virtual string DefaultOrderByTemplate + { + get + { + return "ORDER BY GETDATE() "; + } + } + public virtual string OrderByTemplate + { + get + { + return "ORDER BY "; + } + } + public virtual string GroupByTemplate + { + get + { + return "GROUP BY "; + } + } + + public virtual string MaxTemplate + { + get + { + return "MAX({0})"; + } + } + public virtual string MinTemplate + { + get + { + return "MIN({0})"; + } + } + public virtual string SumTemplate + { + get + { + return "SUM({0})"; + } + } + public virtual string AvgTemplate + { + get + { + return "AVG({0})"; + } + } + public virtual string InTemplate { + get { + return "{0} IN ({1}) "; } } #endregion @@ -109,14 +165,14 @@ namespace SqlSugar #region Common Methods public virtual bool IsSingle() { - var isSingle = Builder.LambadaQueryBuilder.JoinQueryInfos.IsNullOrEmpty(); + var isSingle = Builder.QueryBuilder.JoinQueryInfos.IsNullOrEmpty(); return isSingle; } public virtual ExpressionResult GetExpressionValue(Expression expression, ResolveExpressType resolveType) { ILambdaExpressions resolveExpress = this.LambdaExpressions; this.LambdaExpressions.Clear(); - resolveExpress.JoinQueryInfos = Builder.LambadaQueryBuilder.JoinQueryInfos; + resolveExpress.JoinQueryInfos = Builder.QueryBuilder.JoinQueryInfos; resolveExpress.MappingColumns = Context.MappingColumns; resolveExpress.MappingTables = Context.MappingTables; resolveExpress.IgnoreComumnList = Context.IgnoreComumns; @@ -128,39 +184,41 @@ namespace SqlSugar } public virtual string ToSqlString() { - Sql = new StringBuilder(); - Sql.AppendFormat(SqlTemplate, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString, GetOrderByString); + sql = new StringBuilder(); + sql.AppendFormat(SqlTemplate, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString,(Skip!=null||Take!=null)?null:GetOrderByString); + if (IsCount) { return sql.ToString(); } if (Skip != null && Take == null) { - return string.Format(PageTempalte, Sql.ToString(), GetOrderByString, 0,Take); + return string.Format(PageTempalte, sql.ToString(), GetOrderByString, Skip.ObjToInt() + 1, long.MaxValue); } else if (Skip == null && Take != null) { - return string.Format(PageTempalte, Sql.ToString(), GetOrderByString, Skip+1,long.MaxValue); + return string.Format(PageTempalte, sql.ToString(), GetOrderByString, 1, Take.ObjToInt()); } - else if (Skip != null && Take == null) + else if (Skip != null && Take != null) { - return string.Format(PageTempalte, Sql.ToString(), GetOrderByString, Skip+1, Take); + return string.Format(PageTempalte, sql.ToString(), GetOrderByString, Skip.ObjToInt() + 1, Take); } - else { - return Sql.ToString(); + else + { + return sql.ToString(); } - + } public virtual string ToJoinString(JoinQueryInfo joinInfo) { return string.Format( this.JoinTemplate, - joinInfo.JoinType.ToString(), - joinInfo.TableName, - joinInfo.ShortName + " " + joinInfo.TableWithString, + joinInfo.JoinType.ToString() + PubConst.Space, + joinInfo.TableName + PubConst.Space, + joinInfo.ShortName + PubConst.Space + joinInfo.TableWithString, joinInfo.JoinWhere); } public virtual void Clear() { this.Skip = 0; this.Take = 0; - this.Sql = null; + this.sql = null; this.WhereIndex = 0; this.QueryPars = null; this.GroupByValue = null; @@ -168,6 +226,10 @@ namespace SqlSugar this.WhereInfos = null; this.JoinQueryInfos = null; } + public virtual bool IsComplexModel(string sql) + { + return Regex.IsMatch(sql, @"AS \[\w+\.\w+\]"); + } #endregion #region Get SQL Partial @@ -175,7 +237,7 @@ namespace SqlSugar { get { - if (this.IsCount) return " COUNT(1) "; + if (this.IsCount) return "COUNT(1) AS [Count] "; string reval = string.Empty; if (this.SelectValue == null || this.SelectValue is string) { @@ -226,7 +288,7 @@ namespace SqlSugar if (this.WhereInfos == null) return null; else { - return string.Join(" ", this.WhereInfos); + return string.Join(PubConst.Space, this.WhereInfos); } } } @@ -237,7 +299,7 @@ namespace SqlSugar if (this.JoinQueryInfos.IsNullOrEmpty()) return null; else { - return string.Join(" ", this.JoinQueryInfos.Select(it => this.ToJoinString(it))); + return string.Join(PubConst.Space, this.JoinQueryInfos.Select(it => this.ToJoinString(it))); } } } @@ -246,22 +308,22 @@ namespace SqlSugar get { var result = Builder.GetTranslationTableName(EntityName); + result += PubConst.Space; if (this.TableWithString.IsValuable()) { - result += " " + TableWithString; + result += TableWithString + PubConst.Space; } if (this.TableShortName.IsValuable()) { - result += " " + TableShortName; + result += (TableShortName + PubConst.Space); } if (!this.IsSingle()) { - result = result + " " + GetJoinValueString; + result += GetJoinValueString + PubConst.Space; } return result; } } - public virtual string GetOrderByString { get @@ -269,7 +331,6 @@ namespace SqlSugar return this.OrderByValue; } } - public virtual string GetGroupByString { get diff --git a/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/SqlQueryBuilder.cs b/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/SqlQueryBuilder.cs index 11dca4009..d1aab3990 100644 --- a/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/SqlQueryBuilder.cs +++ b/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/SqlQueryBuilder.cs @@ -16,7 +16,7 @@ namespace SqlSugar { if (this._Fields.IsNullOrEmpty()) { - this._Fields = Regex.Match(this.Sql.ToString(), @"select(.*?)from", RegexOptions.IgnoreCase).Groups[1].Value; + this._Fields = Regex.Match(this.sql.ToString(), @"select(.*?)from", RegexOptions.IgnoreCase).Groups[1].Value; if (this._Fields.IsNullOrEmpty()) { this._Fields = "*"; @@ -30,7 +30,7 @@ namespace SqlSugar } } private StringBuilder _Sql; - public StringBuilder Sql + public StringBuilder sql { get { _Sql = PubMethod.IsNullReturnNew(_Sql); @@ -58,7 +58,7 @@ namespace SqlSugar public void Clear() { - this.Sql = null; + this.sql = null; } } } diff --git a/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/UpdateBuilder.cs b/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/UpdateBuilder.cs index a95912cf7..ebed4e370 100644 --- a/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/UpdateBuilder.cs +++ b/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/UpdateBuilder.cs @@ -20,7 +20,7 @@ namespace SqlSugar } } - public StringBuilder Sql + public StringBuilder sql { get { diff --git a/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderAccessory.cs b/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderAccessory.cs index becdc86e9..dd14e8ea1 100644 --- a/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderAccessory.cs +++ b/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderAccessory.cs @@ -10,7 +10,7 @@ namespace SqlSugar protected InsertBuilder _InsertBuilder; - protected LambadaQueryBuilder _LambadaQueryBuilder; + protected QueryBuilder _QueryBuilder; protected SqlQueryBuilder _SqlQueryBuilder; diff --git a/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider.cs b/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider.cs index 17278aa28..eb0048004 100644 --- a/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider.cs +++ b/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider.cs @@ -17,7 +17,6 @@ namespace SqlSugar public virtual string SqlParameterKeyWord { get { return "@"; } } public abstract string GetTranslationTableName(string name); public abstract string GetTranslationColumnName(string name); - public abstract string GetTableName(string name); public string AppendWhereOrAnd(bool isWhere, string sqlString) { @@ -46,7 +45,7 @@ namespace SqlSugar set { base._InsertBuilder = value; } } - public LambadaQueryBuilder LambadaQueryBuilder + public QueryBuilder QueryBuilder { get;set; } diff --git a/SqlSugar/Common/PubConst.cs b/SqlSugar/Common/PubConst.cs index 21c2f02db..e51b53145 100644 --- a/SqlSugar/Common/PubConst.cs +++ b/SqlSugar/Common/PubConst.cs @@ -7,6 +7,7 @@ namespace SqlSugar internal static class PubConst { internal const string AssemblyName = "SqlSugar"; + internal const string Space = " "; internal static Type StringType = typeof(string); internal static Type IntType = typeof(int); internal static Type DecType = typeof(decimal); diff --git a/SqlSugar/Databases/SqlServer/Db/SqlBuilder/SqlServerBuilder.cs b/SqlSugar/Databases/SqlServer/Db/SqlBuilder/SqlServerBuilder.cs index 05b5527e7..79e6ebb68 100644 --- a/SqlSugar/Databases/SqlServer/Db/SqlBuilder/SqlServerBuilder.cs +++ b/SqlSugar/Databases/SqlServer/Db/SqlBuilder/SqlServerBuilder.cs @@ -17,15 +17,6 @@ namespace SqlSugar .FirstOrDefault(it => it.EntityName.Equals(name, StringComparison.CurrentCultureIgnoreCase)); return "[" + (mappingInfo == null ? name : mappingInfo.DbTableName) + "]"; } - public override string GetTableName(string name) - { - Check.ArgumentNullException(name, string.Format(ErrorMessage.ObjNotExist, "Table Name Or Column Name")); - var context = this.Context; - var mappingInfo = context - .MappingTables - .FirstOrDefault(it => it.EntityName.Equals(name, StringComparison.CurrentCultureIgnoreCase)); - return "[" + (mappingInfo == null ? name : mappingInfo.DbTableName) + "]"; - } public override string GetTranslationColumnName(string name) { Check.ArgumentNullException(name, string.Format(ErrorMessage.ObjNotExist, "Table Name Or Column Name")); @@ -33,7 +24,7 @@ namespace SqlSugar var mappingInfo = context .MappingColumns .FirstOrDefault(it => it.EntityPropertyName.Equals(name, StringComparison.CurrentCultureIgnoreCase)); - return (mappingInfo == null ? name : mappingInfo.DbColumnName); + return (mappingInfo == null ? "["+name+"]" : mappingInfo.DbColumnName); } } } diff --git a/SqlSugar/Databases/SqlServer/Db/SqlBuilder/SqlServerLambadaQueryBuilder.cs b/SqlSugar/Databases/SqlServer/Db/SqlBuilder/SqlServerLambadaQueryBuilder.cs index 20994555a..d796f37c0 100644 --- a/SqlSugar/Databases/SqlServer/Db/SqlBuilder/SqlServerLambadaQueryBuilder.cs +++ b/SqlSugar/Databases/SqlServer/Db/SqlBuilder/SqlServerLambadaQueryBuilder.cs @@ -6,7 +6,7 @@ using System.Threading.Tasks; namespace SqlSugar { - public class SqlServerLambadaQueryBuilder: LambadaQueryBuilder + public class SqlServerQueryBuilder: QueryBuilder { } } diff --git a/SqlSugar/InstanceFactory.cs b/SqlSugar/InstanceFactory.cs index 2a9ea0ca4..b5de0735c 100644 --- a/SqlSugar/InstanceFactory.cs +++ b/SqlSugar/InstanceFactory.cs @@ -19,10 +19,10 @@ namespace SqlSugar return reval; } - public static LambadaQueryBuilder GetLambadaQueryBuilder(IConnectionConfig currentConnectionConfig) + public static QueryBuilder GetQueryBuilder(IConnectionConfig currentConnectionConfig) { CheckConfig(currentConnectionConfig); - LambadaQueryBuilder reval = CreateInstance(GetClassName(currentConnectionConfig.DbType, "LambadaQueryBuilder"), currentConnectionConfig.DbType); + QueryBuilder reval = CreateInstance(GetClassName(currentConnectionConfig.DbType, "QueryBuilder"), currentConnectionConfig.DbType); return reval; } diff --git a/SqlSugar/Interface/IQueryable.cs b/SqlSugar/Interface/IQueryable.cs index 6b49c8d2c..80d109eb4 100644 --- a/SqlSugar/Interface/IQueryable.cs +++ b/SqlSugar/Interface/IQueryable.cs @@ -68,13 +68,13 @@ namespace SqlSugar int Count(); TResult Max(string maxField); - TResult Max(Expression> expression); + TResult Max(Expression> expression); TResult Min(string minField); - TResult Min(Expression> expression); + TResult Min(Expression> expression); TResult Sum(string sumField); - TResult Sum(Expression> expression); + TResult Sum(Expression> expression); TResult Avg(string avgField); - TResult Avg(Expression> expression); + TResult Avg(Expression> expression); List ToList(); diff --git a/SqlSugar/Interface/ISqlBuilder/IDMLBuilder.cs b/SqlSugar/Interface/ISqlBuilder/IDMLBuilder.cs index 6972cd80a..8793eae54 100644 --- a/SqlSugar/Interface/ISqlBuilder/IDMLBuilder.cs +++ b/SqlSugar/Interface/ISqlBuilder/IDMLBuilder.cs @@ -9,7 +9,7 @@ namespace SqlSugar { string SqlTemplate { get; } SqlSugarClient Context { get; set; } - StringBuilder Sql { get; set; } + StringBuilder sql { get; set; } string ToSqlString(); void Clear(); } diff --git a/SqlSugar/Interface/ISqlBuilder/ISqlBuilder.cs b/SqlSugar/Interface/ISqlBuilder/ISqlBuilder.cs index bd4d05e6a..82099fabc 100644 --- a/SqlSugar/Interface/ISqlBuilder/ISqlBuilder.cs +++ b/SqlSugar/Interface/ISqlBuilder/ISqlBuilder.cs @@ -12,14 +12,13 @@ namespace SqlSugar CommandType CommandType { get; set; } String AppendWhereOrAnd(bool isWhere, string sqlString); SqlQueryBuilder SqlQueryBuilder { get; set; } - LambadaQueryBuilder LambadaQueryBuilder { get; set; } + QueryBuilder QueryBuilder { get; set; } InsertBuilder InsertBuilder { get; set; } DeleteBuilder DeleteBuilder { get; set; } UpdateBuilder UpdateBuilder { get; set; } string SqlParameterKeyWord { get; } string GetTranslationTableName(string name); - string GetTableName(string name); string GetTranslationColumnName(string name); } } diff --git a/SqlSugar/SqlSugar.csproj b/SqlSugar/SqlSugar.csproj index 91e6b5a86..78eea858b 100644 --- a/SqlSugar/SqlSugar.csproj +++ b/SqlSugar/SqlSugar.csproj @@ -59,7 +59,7 @@ - + diff --git a/SqlSugar/SqlSugarClient.cs b/SqlSugar/SqlSugarClient.cs index 72c6ae48c..d314e4195 100644 --- a/SqlSugar/SqlSugarClient.cs +++ b/SqlSugar/SqlSugarClient.cs @@ -121,11 +121,11 @@ namespace SqlSugar reval.Context = this; var sqlBuilder = InstanceFactory.GetSqlbuilder(base.CurrentConnectionConfig); ; reval.SqlBuilder = sqlBuilder; - reval.SqlBuilder.LambadaQueryBuilder = InstanceFactory.GetLambadaQueryBuilder(base.CurrentConnectionConfig); - reval.SqlBuilder.LambadaQueryBuilder.Builder = sqlBuilder; - reval.SqlBuilder.Context = reval.SqlBuilder.LambadaQueryBuilder.Context = this; - reval.SqlBuilder.LambadaQueryBuilder.EntityName = typeof(T).Name; - reval.SqlBuilder.LambadaQueryBuilder.LambdaExpressions = InstanceFactory.GetLambdaExpressions(base.CurrentConnectionConfig); + reval.SqlBuilder.QueryBuilder = InstanceFactory.GetQueryBuilder(base.CurrentConnectionConfig); + reval.SqlBuilder.QueryBuilder.Builder = sqlBuilder; + reval.SqlBuilder.Context = reval.SqlBuilder.QueryBuilder.Context = this; + reval.SqlBuilder.QueryBuilder.EntityName = typeof(T).Name; + reval.SqlBuilder.QueryBuilder.LambdaExpressions = InstanceFactory.GetLambdaExpressions(base.CurrentConnectionConfig); return reval; } /// @@ -134,9 +134,9 @@ namespace SqlSugar public virtual ISugarQueryable Queryable(string tableName, string shortName, string widthString = null) { var queryable = Queryable(); - queryable.SqlBuilder.LambadaQueryBuilder.EntityName = tableName; - queryable.SqlBuilder.LambadaQueryBuilder.TableShortName = shortName; - queryable.SqlBuilder.LambadaQueryBuilder.TableWithString = widthString; + queryable.SqlBuilder.QueryBuilder.EntityName = tableName; + queryable.SqlBuilder.QueryBuilder.TableShortName = shortName; + queryable.SqlBuilder.QueryBuilder.TableWithString = widthString; return queryable; } /// @@ -145,80 +145,80 @@ namespace SqlSugar public virtual ISugarQueryable Queryable(string shortName, string widthString = null) where T : class, new() { var queryable = Queryable(); - queryable.SqlBuilder.LambadaQueryBuilder.TableShortName = shortName; - queryable.SqlBuilder.LambadaQueryBuilder.TableWithString = widthString; + queryable.SqlBuilder.QueryBuilder.TableShortName = shortName; + queryable.SqlBuilder.QueryBuilder.TableWithString = widthString; return queryable; } public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() { var queryable = Queryable(); string shortName = string.Empty; - queryable.SqlBuilder.LambadaQueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2)); - queryable.SqlBuilder.LambadaQueryBuilder.TableShortName = shortName; + queryable.SqlBuilder.QueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2)); + queryable.SqlBuilder.QueryBuilder.TableShortName = shortName; return queryable; } public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() { var queryable = Queryable(); string shortName = string.Empty; - queryable.SqlBuilder.LambadaQueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2), typeof(T3)); - queryable.SqlBuilder.LambadaQueryBuilder.TableShortName = shortName; + queryable.SqlBuilder.QueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2), typeof(T3)); + queryable.SqlBuilder.QueryBuilder.TableShortName = shortName; return queryable; } public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() { var queryable = Queryable(); string shortName = string.Empty; - queryable.SqlBuilder.LambadaQueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2), typeof(T3), typeof(T4)); - queryable.SqlBuilder.LambadaQueryBuilder.TableShortName = shortName; + queryable.SqlBuilder.QueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2), typeof(T3), typeof(T4)); + queryable.SqlBuilder.QueryBuilder.TableShortName = shortName; return queryable; } public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() { var queryable = Queryable(); string shortName = string.Empty; - queryable.SqlBuilder.LambadaQueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2), typeof(T3), typeof(T4), typeof(T5)); - queryable.SqlBuilder.LambadaQueryBuilder.TableShortName = shortName; + queryable.SqlBuilder.QueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2), typeof(T3), typeof(T4), typeof(T5)); + queryable.SqlBuilder.QueryBuilder.TableShortName = shortName; return queryable; } public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() { var queryable = Queryable(); string shortName = string.Empty; - queryable.SqlBuilder.LambadaQueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6)); - queryable.SqlBuilder.LambadaQueryBuilder.TableShortName = shortName; + queryable.SqlBuilder.QueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6)); + queryable.SqlBuilder.QueryBuilder.TableShortName = shortName; return queryable; } public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() { var queryable = Queryable(); string shortName = string.Empty; - queryable.SqlBuilder.LambadaQueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7)); - queryable.SqlBuilder.LambadaQueryBuilder.TableShortName = shortName; + queryable.SqlBuilder.QueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7)); + queryable.SqlBuilder.QueryBuilder.TableShortName = shortName; return queryable; } public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() { var queryable = Queryable(); string shortName = string.Empty; - queryable.SqlBuilder.LambadaQueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8)); - queryable.SqlBuilder.LambadaQueryBuilder.TableShortName = shortName; + queryable.SqlBuilder.QueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8)); + queryable.SqlBuilder.QueryBuilder.TableShortName = shortName; return queryable; } public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() { var queryable = Queryable(); string shortName = string.Empty; - queryable.SqlBuilder.LambadaQueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9)); - queryable.SqlBuilder.LambadaQueryBuilder.TableShortName = shortName; + queryable.SqlBuilder.QueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9)); + queryable.SqlBuilder.QueryBuilder.TableShortName = shortName; return queryable; } public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() { var queryable = Queryable(); string shortName = string.Empty; - queryable.SqlBuilder.LambadaQueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9), typeof(T10)); - queryable.SqlBuilder.LambadaQueryBuilder.TableShortName = shortName; + queryable.SqlBuilder.QueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9), typeof(T10)); + queryable.SqlBuilder.QueryBuilder.TableShortName = shortName; return queryable; } @@ -226,7 +226,7 @@ namespace SqlSugar { var dbPars = this.Database.GetParameters(pars); var builder = InstanceFactory.GetSqlbuilder(base.CurrentConnectionConfig); - builder.SqlQueryBuilder.Sql.Append(sql); + builder.SqlQueryBuilder.sql.Append(sql); using (var dataReader = this.Database.GetDataReader(sql, dbPars)) { var reval = this.Database.DbBind.DataReaderToList(typeof(T), dataReader, builder.SqlQueryBuilder.Fields);