- 修复 RereadSql 嵌套查询无别名的问题;

This commit is contained in:
2881099 2022-08-31 18:11:26 +08:00
parent 89943c8c96
commit 00ab65f74f

View File

@ -446,10 +446,16 @@ namespace FreeSql.Internal.CommonProvider
if (tbiindex > 0 && colidx == 0) field.Append("\r\n"); if (tbiindex > 0 && colidx == 0) field.Append("\r\n");
} }
var quoteName = _commonUtils.QuoteSqlName(col.Attribute.Name); var quoteName = _commonUtils.QuoteSqlName(col.Attribute.Name);
field.Append(_commonUtils.RereadColumn(col, $"{tbi.Alias}.{quoteName}")); var columnSql = $"{tbi.Alias}.{quoteName}";
var rereadSql = _commonUtils.RereadColumn(col, columnSql);
field.Append(rereadSql);
++index; ++index;
if (dicfield.ContainsKey(quoteName)) field.Append(_commonUtils.FieldAsAlias($"as{index}")); if (dicfield.ContainsKey(quoteName)) field.Append(_commonUtils.FieldAsAlias($"as{index}"));
else dicfield.Add(quoteName, true); else
{
dicfield.Add(quoteName, true);
if (rereadSql != columnSql) field.Append(_commonUtils.FieldAsAlias(quoteName));
}
++colidx; ++colidx;
} }
tbiindex++; tbiindex++;
@ -603,11 +609,16 @@ namespace FreeSql.Internal.CommonProvider
{ //普通字段 { //普通字段
if (index > 0) field.Append(", "); if (index > 0) field.Append(", ");
var quoteName = _commonUtils.QuoteSqlName(col.Attribute.Name); var quoteName = _commonUtils.QuoteSqlName(col.Attribute.Name);
if (isRereadSql) field.Append(_commonUtils.RereadColumn(col, $"{tb.Alias}.{quoteName}")); var columnSql = $"{tb.Alias}.{quoteName}";
else field.Append($"{tb.Alias}.{quoteName}"); var rereadSql = isRereadSql ? _commonUtils.RereadColumn(col, columnSql) : columnSql;
field.Append(rereadSql);
++index; ++index;
if (dicfield.ContainsKey(quoteName)) field.Append(_commonUtils.FieldAsAlias($"as{index}")); if (dicfield.ContainsKey(quoteName)) field.Append(_commonUtils.FieldAsAlias($"as{index}"));
else dicfield.Add(quoteName, true); else
{
dicfield.Add(quoteName, true);
if (rereadSql != columnSql) field.Append(_commonUtils.FieldAsAlias(quoteName));
}
} }
else else
{ {
@ -627,12 +638,17 @@ namespace FreeSql.Internal.CommonProvider
{ {
if (index > 0) field.Append(", "); if (index > 0) field.Append(", ");
var quoteName = _commonUtils.QuoteSqlName(col2.Attribute.Name); var quoteName = _commonUtils.QuoteSqlName(col2.Attribute.Name);
if (isRereadSql) field.Append(_commonUtils.RereadColumn(col2, $"{tb2.Alias}.{quoteName}")); var columnSql = $"{tb2.Alias}.{quoteName}";
else field.Append($"{tb2.Alias}.{quoteName}"); var rereadSql = isRereadSql ? _commonUtils.RereadColumn(col2, columnSql) : columnSql;
field.Append(rereadSql);
++index; ++index;
++otherindex; ++otherindex;
if (dicfield.ContainsKey(quoteName)) field.Append(_commonUtils.FieldAsAlias($"as{index}")); if (dicfield.ContainsKey(quoteName)) field.Append(_commonUtils.FieldAsAlias($"as{index}"));
else dicfield.Add(quoteName, true); else
{
dicfield.Add(quoteName, true);
if (rereadSql != columnSql) field.Append(_commonUtils.FieldAsAlias(quoteName));
}
} }
} }
//只读到二级属性 //只读到二级属性