Update Queryable.ToParentList

This commit is contained in:
skx 2021-02-20 12:06:20 +08:00
parent c5ffc1cea8
commit 5a6025282a
3 changed files with 21 additions and 3 deletions

View File

@ -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<Tree>().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<Tree>().ToTree(it => it.Child, it => it.ParentId, 0);
var parentList = db.Queryable<Tree>().ToParentList(it => it.ParentId, 22);
var parentList2 = db.Queryable<Tree>().ToParentList(it => it.ParentId, 222);
var parentList3 = db.Queryable<Tree>().ToParentList(it => it.ParentId, 2);
Console.WriteLine("#### End Start ####");
}

View File

@ -800,7 +800,7 @@ namespace SqlSugar
List<T> result = new List<T>() { };
var entity = this.Context.EntityMaintenance.GetEntityInfo<T>();
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<T>().InSingle(primaryKeyValue);
@ -825,7 +825,7 @@ namespace SqlSugar
List<T> result = new List<T>() { };
var entity = this.Context.EntityMaintenance.GetEntityInfo<T>();
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<T>().InSingleAsync(primaryKeyValue);

View File

@ -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;
}
}
}
}