mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-08-24 07:22:57 +08:00
db.Queryable.Includes.Select.ToList
This commit is contained in:
parent
aa88be7e93
commit
7c5bdeeb9d
@ -572,10 +572,12 @@ namespace SqlSugar
|
|||||||
var navInfo = this.QueryBuilder.AppendNavInfo;
|
var navInfo = this.QueryBuilder.AppendNavInfo;
|
||||||
var entityColumns = this.EntityInfo.Columns;
|
var entityColumns = this.EntityInfo.Columns;
|
||||||
var pkColumns = entityColumns.Where(it => it.IsPrimarykey);
|
var pkColumns = entityColumns.Where(it => it.IsPrimarykey);
|
||||||
foreach (var item in pkColumns)
|
AddAppendProperties(navManages, navInfo, entityColumns, pkColumns);
|
||||||
{
|
AddMappingNavProperties(dic, navInfo, entityColumns);
|
||||||
navInfo.AppendProperties.Add(item.PropertyName,item.DbColumnName);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void AddMappingNavProperties(Dictionary<string, Expression> dic, AppendNavInfo navInfo, List<EntityColumnInfo> entityColumns)
|
||||||
|
{
|
||||||
foreach (var item in dic)
|
foreach (var item in dic)
|
||||||
{
|
{
|
||||||
var value = item.Value;
|
var value = item.Value;
|
||||||
@ -595,6 +597,14 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void AddAppendProperties(IEnumerable<NavigatManager<T>> navManages, AppendNavInfo navInfo, List<EntityColumnInfo> entityColumns, IEnumerable<EntityColumnInfo> pkColumns)
|
||||||
|
{
|
||||||
|
foreach (var item in pkColumns)
|
||||||
|
{
|
||||||
|
navInfo.AppendProperties.Add(item.PropertyName, item.DbColumnName);
|
||||||
|
}
|
||||||
foreach (var item in navManages)
|
foreach (var item in navManages)
|
||||||
{
|
{
|
||||||
var navName = ExpressionTool.GetMemberName(item.Expressions.First());
|
var navName = ExpressionTool.GetMemberName(item.Expressions.First());
|
||||||
@ -631,7 +641,23 @@ namespace SqlSugar
|
|||||||
if (this.QueryBuilder.Includes != null)
|
if (this.QueryBuilder.Includes != null)
|
||||||
{
|
{
|
||||||
var managers = (this.QueryBuilder.Includes as List<object>);
|
var managers = (this.QueryBuilder.Includes as List<object>);
|
||||||
if (this.QueryBuilder.SelectValue.HasValue() && this.QueryBuilder.NoCheckInclude == false)
|
if (IsSelectNavQuery())
|
||||||
|
{
|
||||||
|
SelectNavQuery(result, managers);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
foreach (var it in managers)
|
||||||
|
{
|
||||||
|
var manager = it as NavigatManager<TResult>;
|
||||||
|
manager.RootList = result;
|
||||||
|
manager.Execute();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SelectNavQuery<TResult>(List<TResult> result, List<object> managers)
|
||||||
{
|
{
|
||||||
foreach (var it in managers)
|
foreach (var it in managers)
|
||||||
{
|
{
|
||||||
@ -649,7 +675,6 @@ namespace SqlSugar
|
|||||||
var appendResult = this.QueryBuilder.AppendNavInfo.Result[index];
|
var appendResult = this.QueryBuilder.AppendNavInfo.Result[index];
|
||||||
foreach (var kv in appendResult.result)
|
foreach (var kv in appendResult.result)
|
||||||
{
|
{
|
||||||
|
|
||||||
var propertyName = kv.Key.Replace("SugarNav_", "");
|
var propertyName = kv.Key.Replace("SugarNav_", "");
|
||||||
var propertyInfo = columns.First(i => i.PropertyName == propertyName).PropertyInfo;
|
var propertyInfo = columns.First(i => i.PropertyName == propertyName).PropertyInfo;
|
||||||
propertyInfo.SetValue(addItem, kv.Value);
|
propertyInfo.SetValue(addItem, kv.Value);
|
||||||
@ -660,17 +685,12 @@ namespace SqlSugar
|
|||||||
it.GetType().GetMethod("Execute").Invoke(it, null);
|
it.GetType().GetMethod("Execute").Invoke(it, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
private bool IsSelectNavQuery()
|
||||||
{
|
{
|
||||||
foreach (var it in managers)
|
return this.QueryBuilder.SelectValue.HasValue() && this.QueryBuilder.NoCheckInclude == false;
|
||||||
{
|
|
||||||
var manager = it as NavigatManager<TResult>;
|
|
||||||
manager.RootList = result;
|
|
||||||
manager.Execute();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void _Mapper<TResult>(List<TResult> result)
|
protected void _Mapper<TResult>(List<TResult> result)
|
||||||
{
|
{
|
||||||
if (this.EntityInfo.Columns.Any(it => it.IsTranscoding))
|
if (this.EntityInfo.Columns.Any(it => it.IsTranscoding))
|
||||||
|
Loading…
Reference in New Issue
Block a user