diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/AdoProvider/AdoAccessory.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/AdoProvider/AdoAccessory.cs index ce2c2fe19..710efd5bc 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/AdoProvider/AdoAccessory.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/AdoProvider/AdoAccessory.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using System.Data; using System.Data.Common; -using Microsoft.Data.SqlClient; using System.Linq; using System.Reflection; using System.Text; diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/AdoProvider/AdoProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/AdoProvider/AdoProvider.cs index 5603efab0..aa5fb266f 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/AdoProvider/AdoProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/AdoProvider/AdoProvider.cs @@ -3,7 +3,6 @@ using System.Collections; using System.Collections.Generic; using System.Data; using System.Data.Common; -using Microsoft.Data.SqlClient; using System.Diagnostics; using System.Linq; using System.Reflection; diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DbBindProvider/DbBindProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DbBindProvider/DbBindProvider.cs index c0224411b..af742f434 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DbBindProvider/DbBindProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DbBindProvider/DbBindProvider.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Data; -using Microsoft.Data.SqlClient; using System.Linq; using System.Reflection; using System.Text; diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/QueryableProvider/QueryableAccessory.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/QueryableProvider/QueryableAccessory.cs index 9fc604382..4ff968f9b 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/QueryableProvider/QueryableAccessory.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/QueryableProvider/QueryableAccessory.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using Microsoft.Data.SqlClient; using System.Linq; using System.Linq.Expressions; using System.Text; diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index 2b1206513..c827cbaec 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -2,7 +2,6 @@ using System.Collections; using System.Collections.Generic; using System.Data; -using Microsoft.Data.SqlClient; using System.Linq; using System.Linq.Expressions; using System.Text; @@ -958,16 +957,16 @@ namespace SqlSugar var parentIdName =UtilConvert.ToMemberExpression((parentIdExpression as LambdaExpression).Body).Member.Name; var ParentInfo = entity.Columns.First(it => it.PropertyName == parentIdName); var parentPropertyName= ParentInfo.DbColumnName; - var current = this.Context.Queryable().InSingle(primaryKeyValue); + var current = this.Context.Queryable().AS(this.QueryBuilder.GetTableNameString).InSingle(primaryKeyValue); if (current != null) { result.Add(current); object parentId = ParentInfo.PropertyInfo.GetValue(current,null); int i = 0; - while (parentId!=null&&this.Context.Queryable().In(parentId).Any()) + while (parentId!=null&&this.Context.Queryable().AS(this.QueryBuilder.GetTableNameString).In(parentId).Any()) { Check.Exception(i > 100, ErrorMessage.GetThrowMessage("Dead cycle", "出现死循环或超出循环上限(100),检查最顶层的ParentId是否是null或者0")); - var parent = this.Context.Queryable().InSingle(parentId); + var parent = this.Context.Queryable().AS(this.QueryBuilder.GetTableNameString).InSingle(parentId); result.Add(parent); parentId= ParentInfo.PropertyInfo.GetValue(parent, null); ++i; @@ -1177,11 +1176,16 @@ namespace SqlSugar public virtual KeyValuePair> ToSql() { - InitMapping(); - ToSqlBefore(); - string sql = QueryBuilder.ToSqlString(); - RestoreMapping(); - return new KeyValuePair>(sql, QueryBuilder.Parameters); + if (!QueryBuilder.IsClone) + { + var newQueryable = this.Clone(); + newQueryable.QueryBuilder.IsClone = true; + return newQueryable.ToSql(); + } + else + { + return _ToSql(); + } } public ISugarQueryable WithCache(int cacheDurationInSeconds = int.MaxValue) { @@ -1464,6 +1468,14 @@ namespace SqlSugar #endregion #region Private Methods + public virtual KeyValuePair> _ToSql() + { + InitMapping(); + ToSqlBefore(); + string sql = QueryBuilder.ToSqlString(); + RestoreMapping(); + return new KeyValuePair>(sql, QueryBuilder.Parameters); + } private List GetChildList(Expression> parentIdExpression, string pkName, List list, object rootValue,bool isRoot=true) { var exp = (parentIdExpression as LambdaExpression).Body; diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs index c2f89108f..88637850a 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using Microsoft.Data.SqlClient; using System.Dynamic; using System.Linq; using System.Linq.Expressions; @@ -256,7 +255,7 @@ namespace SqlSugar resolveExpress.SqlFuncServices = Context.CurrentConnectionConfig.ConfigureExternalServices == null ? null : Context.CurrentConnectionConfig.ConfigureExternalServices.SqlFuncServices; }; resolveExpress.Resolve(expression, resolveType); - this.Parameters.AddRange(resolveExpress.Parameters.Select(it=>new SugarParameter(it.ParameterName, it.Value))); + this.Parameters.AddRange(resolveExpress.Parameters.Select(it => new SugarParameter(it.ParameterName, it.Value))); var result = resolveExpress.Result; var isSingleTableHasSubquery = IsSingle() && resolveExpress.SingleTableNameSubqueryShortName.HasValue(); if (isSingleTableHasSubquery) @@ -646,6 +645,10 @@ namespace SqlSugar #endregion + #region NoCopy + internal bool IsClone { get; set; } + #endregion + private string GetTableName(string entityName) { if (this.AsTables != null && this.AsTables.Any(it=>it.Key==entityName)) diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/SqlQueryBuilder.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/SqlQueryBuilder.cs index ed8e4e5fd..73c24e97a 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/SqlQueryBuilder.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/SqlQueryBuilder.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using Microsoft.Data.SqlClient; using System.Linq; using System.Text; using System.Text.RegularExpressions;