diff --git a/Src/Asp.Net/SqlServerTest/UnitTest/UQueryable2.cs b/Src/Asp.Net/SqlServerTest/UnitTest/UQueryable2.cs index 47d6f6d7e..546f7c990 100644 --- a/Src/Asp.Net/SqlServerTest/UnitTest/UQueryable2.cs +++ b/Src/Asp.Net/SqlServerTest/UnitTest/UQueryable2.cs @@ -254,6 +254,11 @@ namespace OrmTest parentUser = b }) .ToList(); + + var sql111= Db.SqlQueryable("select 1 id ").ToSql().Key; + var sql222 = Db.SqlQueryable("select 1 id ").Where(it=>it.Id==1).ToSql().Key; + Check.Exception("select 1 id " != sql111, "unit query error"); + Check.Exception("SELECT t.* FROM (select 1 id ) t WHERE ( [Id] = @Id0 )" != sql222, "unit query error"); } [SugarTable("tree ")] public class Tree2 diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index f30eda42f..6173ae591 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -2597,6 +2597,7 @@ namespace SqlSugar asyncQueryableBuilder.DisableTop = this.QueryBuilder.DisableTop; asyncQueryableBuilder.Offset = this.QueryBuilder.Offset; asyncQueryableBuilder.IsSqlQuery = this.QueryBuilder.IsSqlQuery; + asyncQueryableBuilder.OldSql = this.QueryBuilder.OldSql; } protected int SetCacheTime(int cacheDurationInSeconds) { diff --git a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs index 02f7fa5f9..e5745557e 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs @@ -45,7 +45,7 @@ namespace SqlSugar public object SelectValue { get; set; } public string SelectCacheKey { get; set; } public string EntityName { get; set; } - + public string OldSql { get; set; } public Type EntityType { get; set; } public Type ResultType { get; set; } @@ -491,21 +491,14 @@ namespace SqlSugar } public string GetSqlQuerySql(string result) { - if (result.Contains(" t ")&&result.Contains("SELECT .* FROM") && this.IsSqlQuery && (Skip == null && Take == null)&&(this.WhereInfos==null||this.WhereInfos.Count==0)) + if (this.IsSqlQuery&&this.OldSql.HasValue() && (Skip == null && Take == null) && (this.WhereInfos == null || this.WhereInfos.Count == 0)) { - var old = result; - var regex = @"^SELECT .* FROM \(((.|\n|\r)*)\) t $"; - if (this.Context.CurrentConnectionConfig.DbType .IsIn( DbType.MySql,DbType.PostgreSQL,DbType.Sqlite)) - { - result = result.Substring(0,result.Length-1); - } - result = System.Text.RegularExpressions.Regex.Match(result,regex).Groups[1].Value; - if (string.IsNullOrEmpty(result)) - { - result = old; - } + return this.OldSql; + } + else + { + return result; } - return result; } #endregion diff --git a/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarProvider.cs index 7ae06df43..932492555 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarProvider.cs @@ -588,6 +588,7 @@ namespace SqlSugar var sqlBuilder = InstanceFactory.GetSqlbuilder(this.Context.CurrentConnectionConfig); var result= this.Context.Queryable().AS(sqlBuilder.GetPackTable(sql, sqlBuilder.GetDefaultShortName())).With(SqlWith.Null).Select(sqlBuilder.GetDefaultShortName() + ".*"); result.QueryBuilder.IsSqlQuery = true; + result.QueryBuilder.OldSql = sql; return result; } #endregion