mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 09:15:27 +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