mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-19 20:38:16 +08:00
- 完善 WithTempQuery + FromQuery 分组嵌套;
This commit is contained in:
@ -242,23 +242,26 @@ namespace FreeSql.Internal
|
||||
if (diymemexp != null && exp is MemberExpression expMem2 && expMem2.Member.Name == "Key" && expMem2.Expression.Type.FullName.StartsWith("FreeSql.ISelectGroupingAggregate`"))
|
||||
{
|
||||
field.Append(diymemexp._field);
|
||||
string dbNestedField = null;
|
||||
if (diymemexp._map.Childs.Any() == false) //处理 GroupBy(a => a.Title) ToSql(g => new { tit = a.Key }, FieldAliasOptions.AsProperty) 问题
|
||||
{
|
||||
if (index >= 0)
|
||||
{
|
||||
parent.DbNestedField = $"as{++index}";
|
||||
field.Append(_common.FieldAsAlias(parent.DbNestedField));
|
||||
dbNestedField = $"as{++index}";
|
||||
field.Append(_common.FieldAsAlias(dbNestedField));
|
||||
}
|
||||
else if (string.IsNullOrEmpty(parent.CsName) == false)
|
||||
{
|
||||
parent.DbNestedField = GetFieldAsCsName(parent.CsName);
|
||||
if (index == ReadAnonymousFieldAsCsName && diymemexp._field.EndsWith(parent.DbNestedField, StringComparison.CurrentCultureIgnoreCase) == false) //DbField 和 CsName 相同的时候,不处理
|
||||
field.Append(_common.FieldAsAlias(parent.DbNestedField));
|
||||
dbNestedField = GetFieldAsCsName(parent.CsName);
|
||||
if (index == ReadAnonymousFieldAsCsName && diymemexp._field.EndsWith(dbNestedField, StringComparison.CurrentCultureIgnoreCase) == false) //DbField 和 CsName 相同的时候,不处理
|
||||
field.Append(_common.FieldAsAlias(dbNestedField));
|
||||
}
|
||||
}
|
||||
var parentProp = parent.Property;
|
||||
diymemexp._map.CopyTo(parent);
|
||||
diymemexp._map.CopyTo(parent); //可能会清空 parent.DbNestedField、CsName 值
|
||||
parent.Property = parentProp; //若不加此行,会引用 GroupBy(..).ToList(a => new Dto { key = a.Key }) null 错误,CopyTo 之后 Property 变为 null
|
||||
if (string.IsNullOrWhiteSpace(dbNestedField) == false)
|
||||
parent.DbNestedField = dbNestedField;
|
||||
return false;
|
||||
}
|
||||
if (parent.CsType == null) parent.CsType = exp.Type;
|
||||
|
Reference in New Issue
Block a user