diff --git a/Src/Asp.Net/SqlServerTest/Demos/8_JoinSql.cs b/Src/Asp.Net/SqlServerTest/Demos/8_JoinSql.cs index fe2844252..9f453d8d8 100644 --- a/Src/Asp.Net/SqlServerTest/Demos/8_JoinSql.cs +++ b/Src/Asp.Net/SqlServerTest/Demos/8_JoinSql.cs @@ -25,11 +25,11 @@ namespace OrmTest.Demo private static void Clone() { - //var db = GetInstance(); - //var qy = db.Queryable().Where(it => 1 == 1); + var db = GetInstance(); + var qy = db.Queryable().Where(it => 1 == 1); - //var list1 =qy.Clone().Where(it => it.Id == 1).ToList(); - //var list2 = qy.Clone().Where(it => it.Id == 2).ToList(); + var list1 = qy.Clone().Where(it => it.Id == 1).ToList(); + var list2 = qy.Clone().Where(it => it.Id == 2).ToList(); } private static void JoinExp() diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index d322fb8df..981372881 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -50,6 +50,12 @@ namespace SqlSugar QueryBuilder.Clear(); } + public ISugarQueryable Clone() + { + var queryable = this.Context.Queryable().WithCacheIF(IsCache, CacheTime); + CopyQueryBuilder(this.QueryBuilder); + return queryable; + } public virtual ISugarQueryable AS(string tableName) { var entityName = typeof(T2).Name; @@ -1264,18 +1270,16 @@ namespace SqlSugar } } } - private ISugarQueryable CopyQueryable() + protected ISugarQueryable CopyQueryable() { var asyncContext = this.Context.Utilities.CopyContext(true); asyncContext.CurrentConnectionConfig.IsAutoCloseConnection = true; - var asyncQueryable = asyncContext.Queryable().Select(string.Empty).WithCacheIF(IsCache, CacheTime); - CopyQueryBuilder(asyncQueryable); return asyncQueryable; + CopyQueryBuilder(asyncQueryable.QueryBuilder); return asyncQueryable; } - private void CopyQueryBuilder(ISugarQueryable asyncQueryable) + protected void CopyQueryBuilder(QueryBuilder asyncQueryableBuilder) { - var asyncQueryableBuilder = asyncQueryable.QueryBuilder; asyncQueryableBuilder.Take = this.QueryBuilder.Take; asyncQueryableBuilder.Skip = this.QueryBuilder.Skip; asyncQueryableBuilder.SelectValue = this.QueryBuilder.SelectValue; @@ -1466,6 +1470,12 @@ namespace SqlSugar #endregion #region Other + public new ISugarQueryable Clone() + { + var queryable = this.Context.Queryable((t,t2)=>new object[] { }).WithCacheIF(IsCache, CacheTime); + base.CopyQueryBuilder(this.QueryBuilder); + return queryable; + } public new ISugarQueryable AS(string tableName) { var entityName = typeof(AsT).Name; @@ -1743,6 +1753,12 @@ namespace SqlSugar #endregion #region Other + public new ISugarQueryable Clone() + { + var queryable = this.Context.Queryable((t, t2,t3) => new object[] { }).WithCacheIF(IsCache, CacheTime); + base.CopyQueryBuilder(this.QueryBuilder); + return queryable; + } public new ISugarQueryable AS(string tableName) { var entityName = typeof(AsT).Name; @@ -2052,6 +2068,12 @@ namespace SqlSugar #endregion #region Other + public new ISugarQueryable Clone() + { + var queryable = this.Context.Queryable((t, t2,t3,t4) => new object[] { }).WithCacheIF(IsCache, CacheTime); + base.CopyQueryBuilder(this.QueryBuilder); + return queryable; + } public new ISugarQueryable AS(string tableName) { var entityName = typeof(AsT).Name; @@ -2364,6 +2386,12 @@ namespace SqlSugar #endregion #region Other + public new ISugarQueryable Clone() + { + var queryable = this.Context.Queryable((t, t2, t3, t4,t5) => new object[] { }).WithCacheIF(IsCache, CacheTime); + base.CopyQueryBuilder(this.QueryBuilder); + return queryable; + } public new ISugarQueryable AS(string tableName) { var entityName = typeof(AsT).Name; @@ -2666,6 +2694,12 @@ namespace SqlSugar #endregion #region Other + public new ISugarQueryable Clone() + { + var queryable = this.Context.Queryable((t, t2, t3, t4, t5,T6) => new object[] { }).WithCacheIF(IsCache, CacheTime); + base.CopyQueryBuilder(this.QueryBuilder); + return queryable; + } public new ISugarQueryable AS(string tableName) { var entityName = typeof(AsT).Name; @@ -2995,6 +3029,12 @@ namespace SqlSugar #endregion #region Other + public new ISugarQueryable Clone() + { + var queryable = this.Context.Queryable((t, t2, t3, t4, t5, T6,t7) => new object[] { }).WithCacheIF(IsCache, CacheTime); + base.CopyQueryBuilder(this.QueryBuilder); + return queryable; + } public new ISugarQueryable AS(string tableName) { var entityName = typeof(AsT).Name; @@ -3350,6 +3390,12 @@ namespace SqlSugar #endregion #region Other + public new ISugarQueryable Clone() + { + var queryable = this.Context.Queryable((t, t2, t3, t4, t5, T6, t7,t8) => new object[] { }).WithCacheIF(IsCache, CacheTime); + base.CopyQueryBuilder(this.QueryBuilder); + return queryable; + } public new ISugarQueryable AS(string tableName) { var entityName = typeof(AsT).Name; @@ -3729,6 +3775,12 @@ namespace SqlSugar #endregion #region Other + public new ISugarQueryable Clone() + { + var queryable = this.Context.Queryable((t, t2, t3, t4, t5, T6, t7, t8,t9) => new object[] { }).WithCacheIF(IsCache, CacheTime); + base.CopyQueryBuilder(this.QueryBuilder); + return queryable; + } public new ISugarQueryable AS(string tableName) { var entityName = typeof(AsT).Name; @@ -4132,6 +4184,12 @@ namespace SqlSugar #endregion #region Other + public new ISugarQueryable Clone() + { + var queryable = this.Context.Queryable((t, t2, t3, t4, t5, T6, t7, t8, t9,t10) => new object[] { }).WithCacheIF(IsCache, CacheTime); + base.CopyQueryBuilder(this.QueryBuilder); + return queryable; + } public new ISugarQueryable AS(string tableName) { var entityName = typeof(AsT).Name; @@ -4559,6 +4617,12 @@ namespace SqlSugar #endregion #region Other + public new ISugarQueryable Clone() + { + var queryable = this.Context.Queryable((t, t2, t3, t4, t5, T6, t7, t8, t9,t10,t11) => new object[] { }).WithCacheIF(IsCache, CacheTime); + base.CopyQueryBuilder(this.QueryBuilder); + return queryable; + } public new ISugarQueryable AS(string tableName) { var entityName = typeof(AsT).Name; @@ -5012,6 +5076,12 @@ namespace SqlSugar #endregion #region Other + public new ISugarQueryable Clone() + { + var queryable = this.Context.Queryable((t, t2, t3, t4, t5, T6, t7, t8, t9, t10, t11,t12) => new object[] { }).WithCacheIF(IsCache, CacheTime); + base.CopyQueryBuilder(this.QueryBuilder); + return queryable; + } public new ISugarQueryable AS(string tableName) { var entityName = typeof(AsT).Name; diff --git a/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs b/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs index bab64f28b..947ec2c91 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs @@ -14,7 +14,7 @@ namespace SqlSugar SqlSugarClient Context { get; set; } ISqlBuilder SqlBuilder { get; set; } QueryBuilder QueryBuilder { get; set; } - + ISugarQueryable Clone(); ISugarQueryable AS(string tableName); ISugarQueryable AS(string tableName); ISugarQueryable With(string withString); @@ -179,6 +179,7 @@ namespace SqlSugar #endregion #region Other + new ISugarQueryable Clone(); new ISugarQueryable AS(string tableName); new ISugarQueryable AS(string tableName); new ISugarQueryable Filter(string FilterName, bool isDisabledGobalFilter = false); @@ -246,6 +247,7 @@ namespace SqlSugar #endregion #region Other + new ISugarQueryable Clone(); new ISugarQueryable AS(string tableName); new ISugarQueryable AS(string tableName); new ISugarQueryable Filter(string FilterName, bool isDisabledGobalFilter = false); @@ -320,6 +322,7 @@ namespace SqlSugar #endregion #region Other + new ISugarQueryable Clone(); new ISugarQueryable AS(string tableName); new ISugarQueryable AS(string tableName); new ISugarQueryable Filter(string FilterName, bool isDisabledGobalFilter = false); @@ -396,6 +399,7 @@ namespace SqlSugar #endregion #region Other + new ISugarQueryable Clone(); new ISugarQueryable AS(string tableName); new ISugarQueryable AS(string tableName); new ISugarQueryable Filter(string FilterName, bool isDisabledGobalFilter = false); @@ -470,6 +474,7 @@ namespace SqlSugar #endregion #region Other + new ISugarQueryable Clone(); new ISugarQueryable AS(string tableName); new ISugarQueryable AS(string tableName); new ISugarQueryable Filter(string FilterName, bool isDisabledGobalFilter = false); @@ -549,6 +554,7 @@ namespace SqlSugar #endregion #region Other + new ISugarQueryable Clone(); new ISugarQueryable AS(string tableName); new ISugarQueryable AS(string tableName); new ISugarQueryable Filter(string FilterName, bool isDisabledGobalFilter = false); @@ -633,6 +639,7 @@ namespace SqlSugar #endregion #region Other + new ISugarQueryable Clone(); new ISugarQueryable AS(string tableName); new ISugarQueryable AS(string tableName); new ISugarQueryable Filter(string FilterName, bool isDisabledGobalFilter = false); @@ -724,6 +731,7 @@ namespace SqlSugar #endregion #region Other + new ISugarQueryable Clone(); new ISugarQueryable AS(string tableName); new ISugarQueryable AS(string tableName); new ISugarQueryable Filter(string FilterName, bool isDisabledGobalFilter = false); @@ -818,6 +826,7 @@ namespace SqlSugar #endregion #region Other + new ISugarQueryable Clone(); new ISugarQueryable AS(string tableName); new ISugarQueryable AS(string tableName); new ISugarQueryable Filter(string FilterName, bool isDisabledGobalFilter = false); @@ -917,6 +926,7 @@ namespace SqlSugar #endregion #region Other + new ISugarQueryable Clone(); new ISugarQueryable AS(string tableName); new ISugarQueryable AS(string tableName); new ISugarQueryable Filter(string FilterName, bool isDisabledGobalFilter = false); @@ -1021,6 +1031,7 @@ namespace SqlSugar #endregion #region Other + new ISugarQueryable Clone(); new ISugarQueryable AS(string tableName); new ISugarQueryable AS(string tableName); new ISugarQueryable Filter(string FilterName, bool isDisabledGobalFilter = false);