diff --git a/Src/Asp.Net/SqlServerTest/Demos/8_JoinSql.cs b/Src/Asp.Net/SqlServerTest/Demos/8_JoinSql.cs index 9f453d8d8..8107f72c6 100644 --- a/Src/Asp.Net/SqlServerTest/Demos/8_JoinSql.cs +++ b/Src/Asp.Net/SqlServerTest/Demos/8_JoinSql.cs @@ -30,6 +30,16 @@ namespace OrmTest.Demo var list1 = qy.Clone().Where(it => it.Id == 1).ToList(); var list2 = qy.Clone().Where(it => it.Id == 2).ToList(); + + + + var qy2 = db.Queryable((st,sc)=>new object[]{ + JoinType.Left,st.SchoolId==sc.Id + }).Where((st,sc)=>st.Id == 1); + + var join0 = qy2.Clone().Where((st, sc) => sc.Id == 222).Select(st=>st.Id).ToList(); + var join1 = qy2.Clone().Where((st,sc) => st.Id== 1111).ToList(); + var join2 = qy2.Clone().Where((st,sc)=>sc.Id==222).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 981372881..ef0477cec 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -53,7 +53,7 @@ namespace SqlSugar public ISugarQueryable Clone() { var queryable = this.Context.Queryable().WithCacheIF(IsCache, CacheTime); - CopyQueryBuilder(this.QueryBuilder); + CopyQueryBuilder(queryable.QueryBuilder); return queryable; } public virtual ISugarQueryable AS(string tableName) @@ -1280,16 +1280,18 @@ namespace SqlSugar protected void CopyQueryBuilder(QueryBuilder asyncQueryableBuilder) { + var pars = new List(); + pars.AddRange(this.QueryBuilder.Parameters); asyncQueryableBuilder.Take = this.QueryBuilder.Take; asyncQueryableBuilder.Skip = this.QueryBuilder.Skip; asyncQueryableBuilder.SelectValue = this.QueryBuilder.SelectValue; - asyncQueryableBuilder.WhereInfos = this.QueryBuilder.WhereInfos; + asyncQueryableBuilder.WhereInfos =this.Context.Utilities.TranslateCopy(this.QueryBuilder.WhereInfos); asyncQueryableBuilder.EasyJoinInfos = this.QueryBuilder.EasyJoinInfos; asyncQueryableBuilder.JoinQueryInfos = this.QueryBuilder.JoinQueryInfos; asyncQueryableBuilder.WhereIndex = this.QueryBuilder.WhereIndex; asyncQueryableBuilder.EntityType = this.QueryBuilder.EntityType; asyncQueryableBuilder.EntityName = this.QueryBuilder.EntityName; - asyncQueryableBuilder.Parameters = this.QueryBuilder.Parameters; + asyncQueryableBuilder.Parameters = pars; asyncQueryableBuilder.TableShortName = this.QueryBuilder.TableShortName; asyncQueryableBuilder.TableWithString = this.QueryBuilder.TableWithString; asyncQueryableBuilder.GroupByValue = this.QueryBuilder.GroupByValue; @@ -1473,7 +1475,7 @@ namespace SqlSugar public new ISugarQueryable Clone() { var queryable = this.Context.Queryable((t,t2)=>new object[] { }).WithCacheIF(IsCache, CacheTime); - base.CopyQueryBuilder(this.QueryBuilder); + base.CopyQueryBuilder(queryable.QueryBuilder); return queryable; } public new ISugarQueryable AS(string tableName) @@ -1756,7 +1758,7 @@ namespace SqlSugar public new ISugarQueryable Clone() { var queryable = this.Context.Queryable((t, t2,t3) => new object[] { }).WithCacheIF(IsCache, CacheTime); - base.CopyQueryBuilder(this.QueryBuilder); + base.CopyQueryBuilder(queryable.QueryBuilder); return queryable; } public new ISugarQueryable AS(string tableName) @@ -2071,7 +2073,7 @@ namespace SqlSugar public new ISugarQueryable Clone() { var queryable = this.Context.Queryable((t, t2,t3,t4) => new object[] { }).WithCacheIF(IsCache, CacheTime); - base.CopyQueryBuilder(this.QueryBuilder); + base.CopyQueryBuilder(queryable.QueryBuilder); return queryable; } public new ISugarQueryable AS(string tableName) @@ -2389,7 +2391,7 @@ namespace SqlSugar public new ISugarQueryable Clone() { var queryable = this.Context.Queryable((t, t2, t3, t4,t5) => new object[] { }).WithCacheIF(IsCache, CacheTime); - base.CopyQueryBuilder(this.QueryBuilder); + base.CopyQueryBuilder(queryable.QueryBuilder); return queryable; } public new ISugarQueryable AS(string tableName) @@ -2697,7 +2699,7 @@ namespace SqlSugar public new ISugarQueryable Clone() { var queryable = this.Context.Queryable((t, t2, t3, t4, t5,T6) => new object[] { }).WithCacheIF(IsCache, CacheTime); - base.CopyQueryBuilder(this.QueryBuilder); + base.CopyQueryBuilder(queryable.QueryBuilder); return queryable; } public new ISugarQueryable AS(string tableName) @@ -3032,7 +3034,7 @@ namespace SqlSugar 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); + base.CopyQueryBuilder(queryable.QueryBuilder); return queryable; } public new ISugarQueryable AS(string tableName) @@ -3393,7 +3395,7 @@ namespace SqlSugar 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); + base.CopyQueryBuilder(queryable.QueryBuilder); return queryable; } public new ISugarQueryable AS(string tableName) @@ -3778,7 +3780,7 @@ namespace SqlSugar 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); + base.CopyQueryBuilder(queryable.QueryBuilder); return queryable; } public new ISugarQueryable AS(string tableName) @@ -4187,7 +4189,7 @@ namespace SqlSugar 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); + base.CopyQueryBuilder(queryable.QueryBuilder); return queryable; } public new ISugarQueryable AS(string tableName) @@ -4620,7 +4622,7 @@ namespace SqlSugar 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); + base.CopyQueryBuilder(queryable.QueryBuilder); return queryable; } public new ISugarQueryable AS(string tableName) @@ -5079,7 +5081,7 @@ namespace SqlSugar 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); + base.CopyQueryBuilder(queryable.QueryBuilder); return queryable; } public new ISugarQueryable AS(string tableName) diff --git a/Src/Asp.Net/SqlSugar/Infrastructure/SqlSugarAccessory.cs b/Src/Asp.Net/SqlSugar/Infrastructure/SqlSugarAccessory.cs index ea92f58ce..cbc93ef7e 100644 --- a/Src/Asp.Net/SqlSugar/Infrastructure/SqlSugarAccessory.cs +++ b/Src/Asp.Net/SqlSugar/Infrastructure/SqlSugarAccessory.cs @@ -343,6 +343,7 @@ namespace SqlSugar expressionContext.Resolve(joinExpression, ResolveExpressType.Join); int i = 0; var joinArray = MergeJoinArray(expressionContext.Result.GetResultArray()); + if (joinArray == null) return null; parameters = expressionContext.Parameters; foreach (var entityType in entityTypeArray) { @@ -381,6 +382,7 @@ namespace SqlSugar List result = new List(); string joinValue = null; int i = 0; + if (joinArray == null) return null; foreach (var item in joinArray) { ++i;