mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 09:15:27 +08:00 
			
		
		
		
	- 修复 GroupBy + WithTempQuery + .Key.xx + 特性名与实体不同 + 三元表达式解析问题;
This commit is contained in:
		@@ -600,12 +600,16 @@ namespace base_entity
 | 
				
			|||||||
            BaseEntity.Initialization(fsql, () => _asyncUow.Value);
 | 
					            BaseEntity.Initialization(fsql, () => _asyncUow.Value);
 | 
				
			||||||
            #endregion
 | 
					            #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            fsql.GlobalFilter.Apply<User1>("test01", a => a.IsDeleted == false);
 | 
					            var list0x1sql = fsql.Select<OrderLine22x, Product22x>()
 | 
				
			||||||
 | 
					.InnerJoin((l, p) => l.ProductId == p.ID)
 | 
				
			||||||
            var updatejoin031sql = fsql.Update<User1>()
 | 
					.GroupBy((l, p) => new { p.ID, l.ShopType })
 | 
				
			||||||
                .Join<UserGroup>((a, b) => a.GroupId == b.Id)
 | 
					.WithTempQuery(a => new {
 | 
				
			||||||
                .Set((a, b) => b.GroupName == a.Username + "b.groupname")
 | 
					    a.Key.ID,
 | 
				
			||||||
                .ToSql();
 | 
					    Money2 = a.Key.ShopType,
 | 
				
			||||||
 | 
					    Money = a.Key.ShopType == 1 ? a.Value.Item1.Price * a.Value.Item1.Amount : a.Value.Item1.Price * a.Value.Item1.Amount * 1.1m
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					.ToSql();
 | 
				
			||||||
 | 
					            Console.WriteLine(list0x1sql);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            fsql.Delete<TypeHandler01>().Where("1=1").ExecuteAffrows();
 | 
					            fsql.Delete<TypeHandler01>().Where("1=1").ExecuteAffrows();
 | 
				
			||||||
            FreeSql.Internal.Utils.TypeHandlers.TryAdd(typeof(TestIdAndIdentity), new String_TestIdAndIdentity());
 | 
					            FreeSql.Internal.Utils.TypeHandlers.TryAdd(typeof(TestIdAndIdentity), new String_TestIdAndIdentity());
 | 
				
			||||||
@@ -2631,3 +2635,24 @@ class String_TestIdAndIdentity : TypeHandler<TestIdAndIdentity>
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					public partial class OrderLine22x
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public string Id { get; set; }
 | 
				
			||||||
 | 
					    public string OrderId { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public string ShopId { get; set; }
 | 
				
			||||||
 | 
					    [JsonProperty, Column(Name = "Shop_Type")]
 | 
				
			||||||
 | 
					    public int? ShopType { get; set; }
 | 
				
			||||||
 | 
					    public string ProductId { get; set; }
 | 
				
			||||||
 | 
					    public decimal Price { get; set; }
 | 
				
			||||||
 | 
					    public decimal Amount { get; set; }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					[JsonObject(MemberSerialization.OptIn), Table(Name = "T_Product22x", DisableSyncStructure = true)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public partial class Product22x
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public string ID { get; set; }
 | 
				
			||||||
 | 
					    public string Name { get; set; }
 | 
				
			||||||
 | 
					    public string Model { get; set; }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -733,6 +733,15 @@
 | 
				
			|||||||
            <param name="modelBuilder"></param>
 | 
					            <param name="modelBuilder"></param>
 | 
				
			||||||
            <returns></returns>
 | 
					            <returns></returns>
 | 
				
			||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:FreeSqlDbContextExtensions.ApplyConfigurationsFromAssembly(FreeSql.ICodeFirst,System.Reflection.Assembly,System.Func{System.Type,System.Boolean})">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            根据Assembly扫描所有继承IEntityTypeConfiguration<T>的配置类
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="codeFirst"></param>
 | 
				
			||||||
 | 
					            <param name="assembly"></param>
 | 
				
			||||||
 | 
					            <param name="predicate"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
        <member name="M:FreeSqlDbContextExtensions.CreateDbContext(IFreeSql)">
 | 
					        <member name="M:FreeSqlDbContextExtensions.CreateDbContext(IFreeSql)">
 | 
				
			||||||
            <summary>
 | 
					            <summary>
 | 
				
			||||||
            创建普通数据上下文档对象
 | 
					            创建普通数据上下文档对象
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -89,6 +89,19 @@ namespace FreeSql.Internal
 | 
				
			|||||||
                        field.Append(_common.FieldAsAlias(parent.DbNestedField));
 | 
					                        field.Append(_common.FieldAsAlias(parent.DbNestedField));
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					            var isGroupAddField = true;
 | 
				
			||||||
 | 
					            var isGroupAddFieldProvider = diymemexp as SelectGroupingProvider;
 | 
				
			||||||
 | 
					            if (isGroupAddFieldProvider?._addFieldAlias == true)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                switch (exp.NodeType)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    case ExpressionType.Conditional:
 | 
				
			||||||
 | 
					                    case ExpressionType.Call:
 | 
				
			||||||
 | 
					                        isGroupAddField = false;
 | 
				
			||||||
 | 
					                        isGroupAddFieldProvider._addFieldAlias = false;
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            Func<ExpTSC> getTSC = () => new ExpTSC { _tables = _tables, _tableRule = _tableRule, diymemexp = diymemexp, tbtype = SelectTableInfoType.From, isQuoteName = true, isDisableDiyParse = false, style = ExpressionStyle.Where, whereGlobalFilter = whereGlobalFilter, dbParams = select?._params }; //#462 添加 DbParams 解决
 | 
					            Func<ExpTSC> getTSC = () => new ExpTSC { _tables = _tables, _tableRule = _tableRule, diymemexp = diymemexp, tbtype = SelectTableInfoType.From, isQuoteName = true, isDisableDiyParse = false, style = ExpressionStyle.Where, whereGlobalFilter = whereGlobalFilter, dbParams = select?._params }; //#462 添加 DbParams 解决
 | 
				
			||||||
            switch (exp.NodeType)
 | 
					            switch (exp.NodeType)
 | 
				
			||||||
@@ -542,6 +555,7 @@ namespace FreeSql.Internal
 | 
				
			|||||||
            field.Append(", ").Append(parent.DbField);
 | 
					            field.Append(", ").Append(parent.DbField);
 | 
				
			||||||
            LocalSetFieldAlias(ref index, false);
 | 
					            LocalSetFieldAlias(ref index, false);
 | 
				
			||||||
            if (parent.CsType == null && exp.Type.IsValueType) parent.CsType = exp.Type;
 | 
					            if (parent.CsType == null && exp.Type.IsValueType) parent.CsType = exp.Type;
 | 
				
			||||||
 | 
					            if (isGroupAddField == false && isGroupAddFieldProvider != null) isGroupAddFieldProvider._addFieldAlias = true;
 | 
				
			||||||
            return false;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        public object ReadAnonymous(ReadAnonymousTypeInfo parent, DbDataReader dr, ref int index, bool notRead, ReadAnonymousDbValueRef dbValue, int rowIndex,
 | 
					        public object ReadAnonymous(ReadAnonymousTypeInfo parent, DbDataReader dr, ref int index, bool notRead, ReadAnonymousDbValueRef dbValue, int rowIndex,
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user