mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-08-01 10:10:16 +08:00
ToTree support for non-primary key
This commit is contained in:
parent
62fa9cc34e
commit
b525b22cf3
@ -280,6 +280,7 @@ namespace SqlSugar
|
||||
column.UIndexGroupNameList = sugarColumn.UniqueGroupNameList;
|
||||
column.IsOnlyIgnoreUpdate = sugarColumn.IsOnlyIgnoreUpdate;
|
||||
column.IsArray = sugarColumn.IsArray;
|
||||
column.IsTreeKey = sugarColumn.IsTreeKey;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1177,16 +1177,14 @@ namespace SqlSugar
|
||||
public List<T> ToChildList(Expression<Func<T, object>> parentIdExpression, object primaryKeyValue)
|
||||
{
|
||||
var entity = this.Context.EntityMaintenance.GetEntityInfo<T>();
|
||||
Check.Exception(entity.Columns.Where(it => it.IsPrimarykey).Count() == 0, "No Primary key");
|
||||
var pk = entity.Columns.Where(it => it.IsPrimarykey).First().PropertyName;
|
||||
var pk = GetTreeKey(entity);
|
||||
var list = this.ToList();
|
||||
return GetChildList(parentIdExpression, pk, list, primaryKeyValue);
|
||||
}
|
||||
public async Task<List<T>> ToChildListAsync(Expression<Func<T, object>> parentIdExpression, object primaryKeyValue)
|
||||
{
|
||||
var entity = this.Context.EntityMaintenance.GetEntityInfo<T>();
|
||||
Check.Exception(entity.Columns.Where(it => it.IsPrimarykey).Count() == 0, "No Primary key");
|
||||
var pk = entity.Columns.Where(it => it.IsPrimarykey).First().PropertyName;
|
||||
var pk = GetTreeKey(entity);
|
||||
var list = await this.ToListAsync();
|
||||
return GetChildList(parentIdExpression,pk,list, primaryKeyValue);
|
||||
}
|
||||
@ -1267,8 +1265,7 @@ namespace SqlSugar
|
||||
public List<T> ToTree(Expression<Func<T, IEnumerable<object>>> childListExpression, Expression<Func<T, object>> parentIdExpression, object rootValue)
|
||||
{
|
||||
var entity = this.Context.EntityMaintenance.GetEntityInfo<T>();
|
||||
Check.Exception(entity.Columns.Where(it => it.IsPrimarykey).Count() == 0, "No Primary key");
|
||||
var pk = entity.Columns.Where(it => it.IsPrimarykey).First().PropertyName;
|
||||
var pk = GetTreeKey(entity);
|
||||
var list = this.ToList();
|
||||
return GetTreeRoot(childListExpression, parentIdExpression, pk, list, rootValue);
|
||||
}
|
||||
@ -1276,8 +1273,7 @@ namespace SqlSugar
|
||||
public async Task<List<T>> ToTreeAsync(Expression<Func<T, IEnumerable<object>>> childListExpression, Expression<Func<T, object>> parentIdExpression, object rootValue)
|
||||
{
|
||||
var entity = this.Context.EntityMaintenance.GetEntityInfo<T>();
|
||||
Check.Exception(entity.Columns.Where(it => it.IsPrimarykey).Count() == 0, "No Primary key");
|
||||
var pk = entity.Columns.Where(it => it.IsPrimarykey).First().PropertyName;
|
||||
var pk = GetTreeKey(entity); ;
|
||||
var list =await this.ToListAsync();
|
||||
return GetTreeRoot(childListExpression, parentIdExpression, pk, list,rootValue);
|
||||
}
|
||||
@ -2215,6 +2211,14 @@ namespace SqlSugar
|
||||
QueryBuilder.IsCount = true;
|
||||
result = 0;
|
||||
}
|
||||
private static string GetTreeKey(EntityInfo entity)
|
||||
{
|
||||
Check.Exception(entity.Columns.Where(it => it.IsPrimarykey || it.IsTreeKey).Count() == 0, "need IsPrimary=true Or IsTreeKey=true");
|
||||
string pk = entity.Columns.Where(it => it.IsTreeKey).FirstOrDefault()?.PropertyName;
|
||||
if (pk == null)
|
||||
pk = entity.Columns.Where(it => it.IsPrimarykey).FirstOrDefault()?.PropertyName;
|
||||
return pk;
|
||||
}
|
||||
protected ISugarQueryable<TResult> _Select<TResult>(Expression expression)
|
||||
{
|
||||
QueryBuilder.CheckExpression(expression, "Select");
|
||||
|
@ -19,6 +19,7 @@ namespace SqlSugar
|
||||
public bool IsNullable { get; set; }
|
||||
public bool IsIdentity { get; set; }
|
||||
public bool IsPrimarykey { get; set; }
|
||||
public bool IsTreeKey { get; set; }
|
||||
public bool IsEnableUpdateVersionValidation { get; set; }
|
||||
public string EntityName { get; set; }
|
||||
public string DbTableName { get; set; }
|
||||
|
@ -190,6 +190,12 @@ namespace SqlSugar
|
||||
set { _IsArray = value; }
|
||||
}
|
||||
|
||||
private bool _IsTreeKey;
|
||||
public bool IsTreeKey
|
||||
{
|
||||
get { return _IsTreeKey; }
|
||||
set { _IsTreeKey = value; }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user