diff --git a/OrmTest/Models/ViewModelStudent.cs b/OrmTest/Models/ViewModelStudent.cs new file mode 100644 index 000000000..c9f736f7e --- /dev/null +++ b/OrmTest/Models/ViewModelStudent.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace OrmTest.Models +{ + public class ViewModelStudent:Student + { + } +} diff --git a/OrmTest/OrmTest.csproj b/OrmTest/OrmTest.csproj index 9e057de78..a982a772d 100644 --- a/OrmTest/OrmTest.csproj +++ b/OrmTest/OrmTest.csproj @@ -44,6 +44,7 @@ + diff --git a/OrmTest/Program.cs b/OrmTest/Program.cs index 67636495f..e8e1002b5 100644 --- a/OrmTest/Program.cs +++ b/OrmTest/Program.cs @@ -16,13 +16,13 @@ namespace OrmTest static void Main(string[] args) { //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 SingleQuery(eachCount).Init(); + int eachCount = 1000; + //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 3b42c9949..f37d974e3 100644 --- a/OrmTest/UnitTest/Query/SelectQuery.cs +++ b/OrmTest/UnitTest/Query/SelectQuery.cs @@ -29,7 +29,12 @@ namespace OrmTest.UnitTest { using (var db = GetInstance()) { - var list = db.Queryable().Where(st => st.Id > 0).ToList(); + var list = db.Queryable() + .Where(st => st.Id > 0) + .Select(it => new ViewModelStudent { Name = it.Name }).ToList(); + var list2 = db.Queryable() + .Where(st => st.Id > 0) + .Select("*").ToList(); } } diff --git a/SqlSugar/Abstract/DbProvider/DbProvider.cs b/SqlSugar/Abstract/DbProvider/DbProvider.cs index c7f3b5f8c..0618e76c2 100644 --- a/SqlSugar/Abstract/DbProvider/DbProvider.cs +++ b/SqlSugar/Abstract/DbProvider/DbProvider.cs @@ -18,6 +18,11 @@ namespace SqlSugar this.IsClearParameters = true; this.CommandTimeOut = 30000; } + public virtual string SqlParameterKeyWord { + get { + return "@"; + } + } public IDbTransaction Transaction { get; set; } public virtual SqlSugarClient Context { get; set; } public virtual IConnectionConfig MasterConnectionConfig { get; set; } @@ -152,7 +157,7 @@ namespace SqlSugar public virtual SugarParameter[] GetParameters(object obj, PropertyInfo[] propertyInfo = null) { if (obj == null) return null; - return base.GetParameters(obj, propertyInfo,this.Context.SqlBuilder.SqlParameterKeyWord); + return base.GetParameters(obj, propertyInfo,this.SqlParameterKeyWord); } public virtual void BeginTran() diff --git a/SqlSugar/Abstract/QueryableProvider/QueryableAccessory.cs b/SqlSugar/Abstract/QueryableProvider/QueryableAccessory.cs index 45131f561..b2f06588e 100644 --- a/SqlSugar/Abstract/QueryableProvider/QueryableAccessory.cs +++ b/SqlSugar/Abstract/QueryableProvider/QueryableAccessory.cs @@ -32,20 +32,32 @@ namespace SqlSugar _Pars = new List(); _Pars.AddRange(pars); } - protected void Where(Expression> expression, ResolveExpressType type, SqlSugarClient context) where T : class, new() + protected void Where(Expression> expression, ResolveExpressType type,SqlSugarClient context,ISqlBuilder builder) where T : class, new() { - ILambdaExpressions resolveExpress = InstanceFactory.GetLambdaExpressions(context.CurrentConnectionConfig); + ILambdaExpressions resolveExpress = context.LambdaExpressions; resolveExpress.Resolve(expression, type); Pars.AddRange(resolveExpress.Parameters); - context.SqlBuilder.LambadaQueryBuilder.WhereInfos.Add(resolveExpress.Result.GetResultString()); + builder.LambadaQueryBuilder.WhereInfos.Add(resolveExpress.Result.GetResultString()); + resolveExpress.Clear(); } - protected void Where(string whereString, object whereObj, SqlSugarClient context) where T : class, new() + protected void Where(string whereString, object whereObj, SqlSugarClient context, ISqlBuilder builder) where T : class, new() { - var SqlBuilder = context.SqlBuilder; + var SqlBuilder = builder; var whereValue = SqlBuilder.LambadaQueryBuilder.WhereInfos; whereValue.Add(SqlBuilder.AppendWhereOrAnd(whereValue.Count == 0, whereString)); this.AddPars(whereObj, context); } + + protected void SetSelectType(SqlSugarClient context,ISqlBuilder builder) + { + var type = ResolveExpressType.SelectSingle; + if (builder.LambadaQueryBuilder.JoinQueryInfos.IsValuable()) + { + type = ResolveExpressType.SelectMultiple; + } + builder.LambadaQueryBuilder.ResolveType = type; + } + } } diff --git a/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index e8aa08953..3fbfb584e 100644 --- a/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -14,12 +14,13 @@ namespace SqlSugar public SqlSugarClient Context { get; set; } public IDb Db { get { return Context.Database; } } public IDbBind Bind { get { return this.Db.DbBind; } } - public ISqlBuilder SqlBuilder { get { return this.Context.SqlBuilder; } } + public ISqlBuilder SqlBuilder { get; set; } public List Pars { get { return PubMethod.IsNullReturnNew>(base._Pars); } set { base._Pars = value; } } + public void Clear() { Pars = null; @@ -29,23 +30,23 @@ namespace SqlSugar public virtual ISugarQueryable Where(Expression> expression) { var type = ResolveExpressType.WhereSingle; - if (Context.SqlBuilder.LambadaQueryBuilder.JoinQueryInfos.IsValuable()) + if (this.SqlBuilder.LambadaQueryBuilder.JoinQueryInfos.IsValuable()) { type = ResolveExpressType.WhereMultiple; } - base.Where(expression,type, this.Context); + base.Where(expression, type, this.Context,this.SqlBuilder); return this; } public ISugarQueryable Where(string whereString, object whereObj = null) { - base.Where(whereString, whereObj, this.Context); + base.Where(whereString, whereObj, this.Context,this.SqlBuilder); return this; } public ISugarQueryable Where(string whereString, object whereObj = null) where T2 : class, new() { - base.Where(whereString, whereObj, this.Context); + base.Where(whereString, whereObj, this.Context,this.SqlBuilder); return this; } @@ -208,6 +209,9 @@ namespace SqlSugar { var reval = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); reval.Context = this.Context; + reval.SqlBuilder = this.SqlBuilder; + base.SetSelectType(reval.Context,this.SqlBuilder); + SqlBuilder.LambadaQueryBuilder.SelectValue = expression; reval.Pars = this.Pars; return reval; } @@ -216,14 +220,17 @@ namespace SqlSugar { var reval = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); reval.Context = this.Context; - reval.Context.SqlBuilder.LambadaQueryBuilder.SelectValue = selectValue; + reval.SqlBuilder = this.SqlBuilder; + base.SetSelectType(reval.Context,this.SqlBuilder); + SqlBuilder.LambadaQueryBuilder.SelectValue = selectValue; reval.Pars = this.Pars; return reval; } - - public ISugarQueryable Select(string select) + public ISugarQueryable Select(string selectValue) { - throw new NotImplementedException(); + base.SetSelectType(this.Context,this.SqlBuilder); + SqlBuilder.LambadaQueryBuilder.SelectValue = selectValue; + return this; } public int Count() @@ -256,8 +263,7 @@ namespace SqlSugar string sql = SqlBuilder.LambadaQueryBuilder.ToSqlString(); using (var dataReader = this.Db.GetDataReader(sql, this.Pars.ToArray())) { - var reval = this.Bind.DataReaderToList(typeof(T), dataReader, SqlBuilder.LambadaQueryBuilder.SelectValue); - this.Clear(); + var reval = this.Bind.DataReaderToList(typeof(T), dataReader, SqlBuilder.LambadaQueryBuilder.SelectCacheKey); return reval; } } diff --git a/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/DeleteBuilder.cs b/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/DeleteBuilder.cs index 1b6fcefab..d82e90fcc 100644 --- a/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/DeleteBuilder.cs +++ b/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/DeleteBuilder.cs @@ -6,7 +6,7 @@ namespace SqlSugar { public class DeleteBuilder : IDMLBuilder { - public SqlSugarClient Conext + public SqlSugarClient Context { get { diff --git a/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/InsertBuilder.cs b/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/InsertBuilder.cs index cebcf8e01..6fd1d6749 100644 --- a/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/InsertBuilder.cs +++ b/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/InsertBuilder.cs @@ -5,7 +5,7 @@ namespace SqlSugar { public class InsertBuilder : IDMLBuilder { - public SqlSugarClient Conext + public SqlSugarClient Context { get { diff --git a/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/LambadaQueryBuilder.cs b/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/LambadaQueryBuilder.cs index 4961218b3..cda0fbc6b 100644 --- a/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/LambadaQueryBuilder.cs +++ b/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/LambadaQueryBuilder.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; +using System.Linq.Expressions; using System.Text; namespace SqlSugar { @@ -11,18 +12,21 @@ namespace SqlSugar { } - private List _QueryPars; + + private List _QueryPars; private List _JoinQueryInfos; private List _WhereInfos; private string _TableNameString; public StringBuilder Sql { get; set; } - public SqlSugarClient Conext { get; set; } + public SqlSugarClient Context { get; set; } + public ISqlBuilder Builder { get; set; } public int? Skip { get; set; } public int? Take { get; set; } public string OrderByValue { get; set; } - public string SelectValue { get; set; } + public object SelectValue { get; set; } + public string SelectCacheKey { get; set; } public Type EntityType { get; set; } public string EntityName { get { return this.EntityType.Name; } } public string TableWithString { get; set; } @@ -49,24 +53,61 @@ namespace SqlSugar { get { - return this.Conext.SqlBuilder.GetTranslationTableName(EntityType.Name); + return Builder.GetTranslationTableName(EntityType.Name); } } - public virtual string GetSelectValueString + public virtual string GetSelectValue { get { - if (this.SelectValue.IsNullOrEmpty()) + string reval = string.Empty; + if (this.SelectValue==null||this.SelectValue is string) { - string pre = null; - if (this.JoinQueryInfos.IsValuable() && this.JoinQueryInfos.Any(it => it.PreShortName.IsValuable())) { - pre = this.Conext.SqlBuilder.GetTranslationColumnName(this.JoinQueryInfos.Single(it => it.PreShortName.IsValuable()).PreShortName)+"."; - } - return string.Join(",", this.Conext.Database.DbMaintenance.GetColumnInfosByTableName(this.EntityName).Select(it => pre+this.Conext.SqlBuilder.GetTranslationColumnName(it.ColumnName))); + reval = GetSelectValueByString(); } - else return this.SelectValue; + else + { + reval = GetSelectValueByExpression(); + } + if (ResolveType == ResolveExpressType.SelectMultiple) { + this.SelectCacheKey = this.SelectCacheKey+string.Join("-",this._JoinQueryInfos.Select(it => it.TableName)); + } + return reval; } } + public virtual string GetSelectValueByExpression() + { + var expression = this.SelectValue as Expression; + ILambdaExpressions resolveExpress = this.Context.LambdaExpressions; + var isSingle= Builder.LambadaQueryBuilder.JoinQueryInfos.IsValuable(); + resolveExpress.Resolve(expression, ResolveType); + this.QueryPars.AddRange(resolveExpress.Parameters); + var reval= resolveExpress.Result.GetResultString(); + this.SelectCacheKey = reval; + resolveExpress.Clear(); + return reval; + } + public virtual string GetSelectValueByString() + { + string reval; + if (this.SelectValue.IsNullOrEmpty()) + { + string pre = null; + if (this.JoinQueryInfos.IsValuable() && this.JoinQueryInfos.Any(it => it.PreShortName.IsValuable())) + { + pre = Builder.GetTranslationColumnName(this.JoinQueryInfos.Single(it => it.PreShortName.IsValuable()).PreShortName) + "."; + } + reval = string.Join(",", this.Context.Database.DbMaintenance.GetColumnInfosByTableName(this.EntityName).Select(it => pre + Builder.GetTranslationColumnName(it.ColumnName))); + this.SelectCacheKey = "*"; + } + else + { + reval = this.SelectValue.ObjToString(); + } + + return reval; + } + public virtual string GetWhereValueString { get @@ -74,7 +115,7 @@ namespace SqlSugar if (this.WhereInfos == null) return null; else { - return " WHERE "+string.Join(" ", this.WhereInfos); + return " WHERE " + string.Join(" ", this.WhereInfos); } } } @@ -83,7 +124,8 @@ namespace SqlSugar get { if (this.JoinQueryInfos.IsNullOrEmpty()) return null; - else { + else + { return string.Join(" ", this.JoinQueryInfos.Select(it => this.ToJoinString(it))); } } @@ -93,17 +135,18 @@ namespace SqlSugar { Sql = new StringBuilder(); var tableString = GetTableNameString; - if (this.JoinQueryInfos.IsValuable()) { + if (this.JoinQueryInfos.IsValuable()) + { tableString = tableString + " " + GetJoinValueString; } - Sql.AppendFormat(SqlTemplate, GetSelectValueString, tableString , GetWhereValueString); + Sql.AppendFormat(SqlTemplate, GetSelectValue, tableString, GetWhereValueString); return Sql.ToString(); } public virtual string ToJoinString(JoinQueryInfo joinInfo) { return string.Format( this.JoinTemplate, - joinInfo.JoinIndex == 1 ? (joinInfo.PreShortName + " " + joinInfo.JoinType.ToString()+" ") : (joinInfo.JoinType.ToString() + " JOIN "), + joinInfo.JoinIndex == 1 ? (joinInfo.PreShortName + " " + joinInfo.JoinType.ToString() + " ") : (joinInfo.JoinType.ToString() + " JOIN "), joinInfo.TableName, joinInfo.ShortName + " " + TableWithString, joinInfo.JoinWhere); @@ -117,8 +160,8 @@ namespace SqlSugar } set { _WhereInfos = value; } } - - public virtual List QueryPars + + public virtual List QueryPars { get { diff --git a/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/SqlQueryBuilder.cs b/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/SqlQueryBuilder.cs index 834c808b2..11dca4009 100644 --- a/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/SqlQueryBuilder.cs +++ b/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/SqlQueryBuilder.cs @@ -41,7 +41,7 @@ namespace SqlSugar } } - public SqlSugarClient Conext { get; set; } + public SqlSugarClient Context { get; set; } public string SqlTemplate { diff --git a/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/SqlableQueryBuilder.cs b/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/SqlableQueryBuilder.cs index f9518bb70..8b25761f3 100644 --- a/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/SqlableQueryBuilder.cs +++ b/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/SqlableQueryBuilder.cs @@ -20,7 +20,7 @@ namespace SqlSugar } } - public SqlSugarClient Conext + public SqlSugarClient Context { get { diff --git a/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/UpdateBuilder.cs b/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/UpdateBuilder.cs index 0611dfa3e..a95912cf7 100644 --- a/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/UpdateBuilder.cs +++ b/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/UpdateBuilder.cs @@ -7,7 +7,7 @@ namespace SqlSugar { public class UpdateBuilder : IDMLBuilder { - public SqlSugarClient Conext + public SqlSugarClient Context { get { diff --git a/SqlSugar/ExpressionsToSql/Common/ExpressionResult.cs b/SqlSugar/ExpressionsToSql/Common/ExpressionResult.cs index c921d039a..2b00a6a28 100644 --- a/SqlSugar/ExpressionsToSql/Common/ExpressionResult.cs +++ b/SqlSugar/ExpressionsToSql/Common/ExpressionResult.cs @@ -67,6 +67,9 @@ namespace SqlSugar public string GetResultString() { if (this._Result == null) return null; + if (this._ResolveExpressType.IsIn(ResolveExpressType.SelectMultiple, ResolveExpressType.SelectSingle)) { + return this.Result.ToString().TrimEnd(','); + } return this.Result.ToString(); } diff --git a/SqlSugar/ExpressionsToSql/ExpressionContext.cs b/SqlSugar/ExpressionsToSql/ExpressionContext.cs index 347497211..52aa08510 100644 --- a/SqlSugar/ExpressionsToSql/ExpressionContext.cs +++ b/SqlSugar/ExpressionsToSql/ExpressionContext.cs @@ -76,6 +76,10 @@ namespace SqlSugar { return string.Format(" {0} {1} {2} ", fieldValue, "AS", fieldName); } + public virtual void Clear() + { + base._Result = null; + } #endregion } } diff --git a/SqlSugar/Interface/IDb.cs b/SqlSugar/Interface/IDb.cs index 9b2ce544a..dcd4d1f1f 100644 --- a/SqlSugar/Interface/IDb.cs +++ b/SqlSugar/Interface/IDb.cs @@ -11,6 +11,7 @@ namespace SqlSugar { public partial interface IDb { + string SqlParameterKeyWord { get; } IDbConnection Connection { get; set; } IDbTransaction Transaction { get; set; } IDataParameter[] ToIDbDataParameter(params SugarParameter[] pars); diff --git a/SqlSugar/Interface/ILambdaExpressions.cs b/SqlSugar/Interface/ILambdaExpressions.cs index be72ac775..c18b377de 100644 --- a/SqlSugar/Interface/ILambdaExpressions.cs +++ b/SqlSugar/Interface/ILambdaExpressions.cs @@ -19,5 +19,6 @@ namespace SqlSugar string GetaMppingColumnsName(string name); string GetAsString(string fieldName, string fieldValue); void Resolve(Expression expression, ResolveExpressType resolveType); + void Clear(); } } diff --git a/SqlSugar/Interface/IQueryable.cs b/SqlSugar/Interface/IQueryable.cs index 65de24f3f..e222a0421 100644 --- a/SqlSugar/Interface/IQueryable.cs +++ b/SqlSugar/Interface/IQueryable.cs @@ -10,6 +10,7 @@ namespace SqlSugar public partial interface ISugarQueryable where T : class, new() { SqlSugarClient Context { get; set; } + ISqlBuilder SqlBuilder { get; set; } List Pars { get; set; } diff --git a/SqlSugar/Interface/ISqlBuilder/IDMLBuilder.cs b/SqlSugar/Interface/ISqlBuilder/IDMLBuilder.cs index 3bcf53018..6972cd80a 100644 --- a/SqlSugar/Interface/ISqlBuilder/IDMLBuilder.cs +++ b/SqlSugar/Interface/ISqlBuilder/IDMLBuilder.cs @@ -8,7 +8,7 @@ namespace SqlSugar public partial interface IDMLBuilder { string SqlTemplate { get; } - SqlSugarClient Conext { get; set; } + SqlSugarClient Context { get; set; } StringBuilder Sql { get; set; } string ToSqlString(); void Clear(); diff --git a/SqlSugar/SqlSugarAccessory.cs b/SqlSugar/SqlSugarAccessory.cs index e68ecf8a2..1c9d5c1fa 100644 --- a/SqlSugar/SqlSugarAccessory.cs +++ b/SqlSugar/SqlSugarAccessory.cs @@ -19,7 +19,6 @@ namespace SqlSugar protected ISqlBuilder _SqlBuilder; protected IDb _Ado; protected ILambdaExpressions _LambdaExpressions; - protected object _Queryable; protected object _Sqlable; protected void InitConstructor() diff --git a/SqlSugar/SqlSugarClient.cs b/SqlSugar/SqlSugarClient.cs index 01f3fad8e..b950496b4 100644 --- a/SqlSugar/SqlSugarClient.cs +++ b/SqlSugar/SqlSugarClient.cs @@ -72,23 +72,6 @@ namespace SqlSugar #region properties /// - /// Sql string processing - /// - public virtual ISqlBuilder SqlBuilder - { - get - { - if (_SqlBuilder == null) - { - var reval = InstanceFactory.GetSqlbuilder(base.CurrentConnectionConfig); - _SqlBuilder = reval; - _SqlBuilder.Context = this; - return reval; - } - return _SqlBuilder; - } - } - /// ///Database operation /// public virtual IDb Database @@ -128,54 +111,51 @@ namespace SqlSugar /// public virtual ISugarQueryable Queryable() where T : class, new() { - if (_Queryable == null) - { - var reval = InstanceFactory.GetQueryable(base.CurrentConnectionConfig); - reval.Context = this; - var sqlBuilder = reval.Context.SqlBuilder; - sqlBuilder.LambadaQueryBuilder = InstanceFactory.GetLambadaQueryBuilder(base.CurrentConnectionConfig); - sqlBuilder.LambadaQueryBuilder.Conext = this; - sqlBuilder.LambadaQueryBuilder.EntityType = typeof(T); - _Queryable = reval; - return reval; - } - return (ISugarQueryable)_Queryable; + var reval = InstanceFactory.GetQueryable(base.CurrentConnectionConfig); + 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.EntityType = typeof(T); + return reval; } - public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() + public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() { var queryable = Queryable(); - SqlBuilder.LambadaQueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression,this,typeof(T2)); + queryable.SqlBuilder.LambadaQueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, typeof(T2)); return queryable; } - public virtual ISugarQueryable Queryable(Func joinExpression) where T : class, new() + public virtual ISugarQueryable Queryable(Func joinExpression) where T : class, new() { return null; } - public virtual List Queryable(Func joinExpression) where T : class, new() + public virtual List Queryable(Func joinExpression) where T : class, new() { return null; } - public virtual ISugarQueryable Queryable(Func joinExpression) where T : class, new() + public virtual ISugarQueryable Queryable(Func joinExpression) where T : class, new() { return null; } - public virtual ISugarQueryable Queryable(Func joinExpression) where T : class, new() + public virtual ISugarQueryable Queryable(Func joinExpression) where T : class, new() { return null; } - public virtual ISugarQueryable Queryable(Func joinExpression) where T : class, new() + public virtual ISugarQueryable Queryable(Func joinExpression) where T : class, new() { return null; } - public virtual ISugarQueryable Queryable(Func joinExpression) where T : class, new() + public virtual ISugarQueryable Queryable(Func joinExpression) where T : class, new() { return null; } - public virtual ISugarQueryable Queryable(Func joinExpression) where T : class, new() + public virtual ISugarQueryable Queryable(Func joinExpression) where T : class, new() { return null; } - public virtual ISugarQueryable Queryable(Func joinExpression) where T : class, new() + public virtual ISugarQueryable Queryable(Func joinExpression) where T : class, new() { return null; } @@ -202,11 +182,12 @@ namespace SqlSugar public virtual List SqlQuery(string sql, object pars = null) { var dbPars = this.Database.GetParameters(pars); - this.SqlBuilder.SqlQueryBuilder.Sql.Append(sql); + var builder = InstanceFactory.GetSqlbuilder(base.CurrentConnectionConfig); + builder.SqlQueryBuilder.Sql.Append(sql); using (var dataReader = this.Database.GetDataReader(sql, dbPars)) { - var reval = this.Database.DbBind.DataReaderToList(typeof(T), dataReader, this.SqlBuilder.SqlQueryBuilder.Fields); - this.SqlBuilder.SqlQueryBuilder.Clear(); + var reval = this.Database.DbBind.DataReaderToList(typeof(T), dataReader, builder.SqlQueryBuilder.Fields); + builder.SqlQueryBuilder.Clear(); return reval; } }