From 5a6025282a92e9ccdafeea001e95ff1991c748dd Mon Sep 17 00:00:00 2001 From: skx <610262374@qq.com> Date: Sat, 20 Feb 2021 12:06:20 +0800 Subject: [PATCH] Update Queryable.ToParentList --- Src/Asp.Net/MySqlTest/Demo/Demo1_Queryable.cs | 7 ++++++- .../Abstract/QueryableProvider/QueryableProvider.cs | 4 ++-- Src/Asp.Net/SqlSugar/Utilities/UtilConvert.cs | 13 +++++++++++++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/Src/Asp.Net/MySqlTest/Demo/Demo1_Queryable.cs b/Src/Asp.Net/MySqlTest/Demo/Demo1_Queryable.cs index 68af0eb2f..a8d8a2b63 100644 --- a/Src/Asp.Net/MySqlTest/Demo/Demo1_Queryable.cs +++ b/Src/Asp.Net/MySqlTest/Demo/Demo1_Queryable.cs @@ -145,7 +145,7 @@ namespace OrmTest db.Insertable(new Tree() { Id = 12, Name = "child2",ParentId=1 }).ExecuteCommand(); db.Insertable(new Tree() { Id = 2, Name = "root" }).ExecuteCommand(); db.Insertable(new Tree() { Id = 22, Name = "child3", ParentId = 2 }).ExecuteCommand(); - + db.Insertable(new Tree() { Id = 222, Name = "child222", ParentId = 22 }).ExecuteCommand(); // Same property name mapping,Both entities have parentId var list = db.Queryable().Mapper(it => it.Parent, it => it.ParentId).ToList(); @@ -184,6 +184,11 @@ namespace OrmTest itemModel.Items = allItems.Where(it => it.OrderId==itemModel.Id).ToList();//Every time it's executed }).ToList(); + + var tree = db.Queryable().ToTree(it => it.Child, it => it.ParentId, 0); + var parentList = db.Queryable().ToParentList(it => it.ParentId, 22); + var parentList2 = db.Queryable().ToParentList(it => it.ParentId, 222); + var parentList3 = db.Queryable().ToParentList(it => it.ParentId, 2); Console.WriteLine("#### End Start ####"); } diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index d4e089f2f..00b72461d 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -800,7 +800,7 @@ namespace SqlSugar List result = new List() { }; var entity = this.Context.EntityMaintenance.GetEntityInfo(); Check.Exception(entity.Columns.Where(it => it.IsPrimarykey).Count() == 0, "No Primary key"); - var parentIdName = (parentIdExpression as MemberExpression).Member.Name; + 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); @@ -825,7 +825,7 @@ namespace SqlSugar List result = new List() { }; var entity = this.Context.EntityMaintenance.GetEntityInfo(); Check.Exception(entity.Columns.Where(it => it.IsPrimarykey).Count() == 0, "No Primary key"); - var parentIdName = (parentIdExpression as MemberExpression).Member.Name; + 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 =await this.Context.Queryable().InSingleAsync(primaryKeyValue); diff --git a/Src/Asp.Net/SqlSugar/Utilities/UtilConvert.cs b/Src/Asp.Net/SqlSugar/Utilities/UtilConvert.cs index 01ca518e7..e141dcb15 100644 --- a/Src/Asp.Net/SqlSugar/Utilities/UtilConvert.cs +++ b/Src/Asp.Net/SqlSugar/Utilities/UtilConvert.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Linq.Expressions; using System.Text; namespace SqlSugar { @@ -116,5 +117,17 @@ namespace SqlSugar } return reval; } + + internal static MemberExpression ToMemberExpression(Expression parentIdExpression) + { + if (parentIdExpression is UnaryExpression) + { + return (parentIdExpression as UnaryExpression).Operand as MemberExpression; + } + else + { + return parentIdExpression as MemberExpression; + } + } } }