mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-20 04:48:16 +08:00
- 修复 MapType 属性的表达式解析 数组.Contains 得到是映射之前的值 bug;
- 修复 MapType 属性 与 IncludeMany 变异功能未映射处理的 bug;
This commit is contained in:
@ -932,12 +932,12 @@ namespace FreeSql.Internal
|
||||
throw new ArgumentException($"{tb.DbName}.{memberExp.Member.Name} 被忽略,请检查 IsIgnore 设置,确认 get/set 为 public");
|
||||
throw new ArgumentException($"{tb.DbName} 找不到列 {memberExp.Member.Name}");
|
||||
}
|
||||
var curcol = tb.ColumnsByCs[memberExp.Member.Name];
|
||||
if (tsc._selectColumnMap != null)
|
||||
{
|
||||
tsc._selectColumnMap.Add(new SelectColumnInfo { Table = null, Column = tb.ColumnsByCs[memberExp.Member.Name] });
|
||||
}
|
||||
var name = tb.ColumnsByCs[memberExp.Member.Name].Attribute.Name;
|
||||
tsc._selectColumnMap.Add(new SelectColumnInfo { Table = null, Column = curcol });
|
||||
var name = curcol.Attribute.Name;
|
||||
if (tsc.isQuoteName) name = _common.QuoteSqlName(name);
|
||||
tsc.mapTypeTmp = curcol.Attribute.MapType == curcol.CsType ? null : curcol.Attribute.MapType;
|
||||
if (string.IsNullOrEmpty(tsc.alias001)) return name;
|
||||
return $"{tsc.alias001}.{name}";
|
||||
}
|
||||
@ -1098,7 +1098,8 @@ namespace FreeSql.Internal
|
||||
tsc._selectColumnMap.Add(new SelectColumnInfo { Table = find2, Column = col2 });
|
||||
return "";
|
||||
}
|
||||
name2 = tb2.ColumnsByCs[mp2.Member.Name].Attribute.Name;
|
||||
name2 = col2.Attribute.Name;
|
||||
tsc.mapTypeTmp = col2.Attribute.MapType == col2.CsType ? null : col2.Attribute.MapType;
|
||||
break;
|
||||
case ExpressionType.Call: break;
|
||||
}
|
||||
@ -1150,10 +1151,22 @@ namespace FreeSql.Internal
|
||||
public bool isDisableDiyParse { get; set; }
|
||||
public ExpressionStyle style { get; set; }
|
||||
public Type mapType { get; set; }
|
||||
public Type mapTypeTmp { get; set; }
|
||||
public TableInfo currentTable { get; set; }
|
||||
public List<LambdaExpression> whereCascadeExpression { get; set; }
|
||||
public string alias001 { get; set; } //单表字段的表别名
|
||||
|
||||
public void SetMapTypeTmp(Type newValue)
|
||||
{
|
||||
this.mapTypeTmp = null;
|
||||
}
|
||||
public Type SetMapTypeReturnOld(Type newValue)
|
||||
{
|
||||
var old = this.mapType;
|
||||
this.mapType = newValue;
|
||||
return old;
|
||||
}
|
||||
|
||||
public ExpTSC CloneSetgetSelectGroupingMapStringAndgetSelectGroupingMapStringAndtbtype(List<SelectColumnInfo> v1, Func<Expression[], string> v2, SelectTableInfoType v3)
|
||||
{
|
||||
return new ExpTSC
|
||||
|
@ -605,7 +605,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
for (var z = 0; z < tbref.Columns.Count; z++)
|
||||
{
|
||||
if (z > 0) sbWhereOne.Append(" AND ");
|
||||
sbWhereOne.Append(_commonUtils.FormatSql($"{subSelectT1Alias}.{_commonUtils.QuoteSqlName(tbref.RefColumns[z].Attribute.Name)}={{0}}", getListValue(list[y], tbref.Columns[z].CsName, z)));
|
||||
sbWhereOne.Append(_commonUtils.FormatSql($"{subSelectT1Alias}.{_commonUtils.QuoteSqlName(tbref.RefColumns[z].Attribute.Name)}={{0}}", Utils.GetDataReaderValue(tbref.RefColumns[z].Attribute.MapType, getListValue(list[y], tbref.Columns[z].CsName, z))));
|
||||
}
|
||||
sbWhereOne.Append(")");
|
||||
var whereOne = sbWhereOne.ToString();
|
||||
@ -797,7 +797,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
for (var z = 0; z < tbref.Columns.Count; z++)
|
||||
{
|
||||
if (z > 0) sbWhereOne.Append(" AND ");
|
||||
sbWhereOne.Append(_commonUtils.FormatSql($" midtb.{_commonUtils.QuoteSqlName(tbref.MiddleColumns[z].Attribute.Name)}={{0}}", getListValue1(list[y], tbref.Columns[z].CsName)));
|
||||
sbWhereOne.Append(_commonUtils.FormatSql($" midtb.{_commonUtils.QuoteSqlName(tbref.MiddleColumns[z].Attribute.Name)}={{0}}", Utils.GetDataReaderValue(tbref.MiddleColumns[z].Attribute.MapType, getListValue1(list[y], tbref.Columns[z].CsName))));
|
||||
}
|
||||
sbWhereOne.Append(")");
|
||||
var whereOne = sbWhereOne.ToString();
|
||||
@ -825,7 +825,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
subSelect._where.Clear();
|
||||
if (tbref.Columns.Count == 1)
|
||||
{
|
||||
subSelect.Where(_commonUtils.FormatSql($"midtb.{_commonUtils.QuoteSqlName(tbref.MiddleColumns[0].Attribute.Name)} in {{0}}", list.Select(a => getListValue1(a, tbref.Columns[0].CsName)).Distinct()));
|
||||
subSelect.Where(_commonUtils.FormatSql($"midtb.{_commonUtils.QuoteSqlName(tbref.MiddleColumns[0].Attribute.Name)} in {{0}}", list.Select(a => Utils.GetDataReaderValue(tbref.MiddleColumns[0].Attribute.MapType, getListValue1(a, tbref.Columns[0].CsName))).Distinct()));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
Reference in New Issue
Block a user