mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 01:05:27 +08:00 
			
		
		
		
	- 修复 GroupBy + WithTempQuery 别名问题;
This commit is contained in:
		@@ -555,7 +555,7 @@ namespace base_entity
 | 
				
			|||||||
            var fsql = new FreeSql.FreeSqlBuilder()
 | 
					            var fsql = new FreeSql.FreeSqlBuilder()
 | 
				
			||||||
                .UseAutoSyncStructure(true)
 | 
					                .UseAutoSyncStructure(true)
 | 
				
			||||||
                .UseNoneCommandParameter(true)
 | 
					                .UseNoneCommandParameter(true)
 | 
				
			||||||
                .UseNameConvert(NameConvertType.ToLower)
 | 
					                //.UseNameConvert(NameConvertType.ToLower)
 | 
				
			||||||
                //.UseMappingPriority(MappingPriorityType.Attribute, MappingPriorityType.FluentApi, MappingPriorityType.Aop)
 | 
					                //.UseMappingPriority(MappingPriorityType.Attribute, MappingPriorityType.FluentApi, MappingPriorityType.Aop)
 | 
				
			||||||
                .UseAdoConnectionPool(true)
 | 
					                .UseAdoConnectionPool(true)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -596,7 +596,7 @@ namespace base_entity
 | 
				
			|||||||
				//.UseConnectionString(DataType.QuestDb, "host=localhost;port=8812;username=admin;password=quest;database=qdb;ServerCompatibilityMode=NoTypeLoading;")
 | 
									//.UseConnectionString(DataType.QuestDb, "host=localhost;port=8812;username=admin;password=quest;database=qdb;ServerCompatibilityMode=NoTypeLoading;")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				//.UseConnectionString(DataType.ClickHouse, "DataCompress=False;BufferSize=32768;SocketTimeout=10000;CheckCompressedHash=False;Encrypt=False;Compressor=lz4;Host=192.168.0.121;Port=8125;Database=PersonnelLocation;Username=root;Password=123")
 | 
									//.UseConnectionString(DataType.ClickHouse, "DataCompress=False;BufferSize=32768;SocketTimeout=10000;CheckCompressedHash=False;Encrypt=False;Compressor=lz4;Host=192.168.0.121;Port=8125;Database=PersonnelLocation;Username=root;Password=123")
 | 
				
			||||||
                .UseConnectionFactory(DataType.ClickHouse, () => null)
 | 
					                //.UseConnectionFactory(DataType.ClickHouse, () => null)
 | 
				
			||||||
				.UseMonitorCommand(cmd =>
 | 
									.UseMonitorCommand(cmd =>
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    Console.WriteLine(cmd.CommandText + "\r\n");
 | 
					                    Console.WriteLine(cmd.CommandText + "\r\n");
 | 
				
			||||||
@@ -608,16 +608,55 @@ namespace base_entity
 | 
				
			|||||||
                .UseGenerateCommandParameterWithLambda(true)
 | 
					                .UseGenerateCommandParameterWithLambda(true)
 | 
				
			||||||
                .Build();
 | 
					                .Build();
 | 
				
			||||||
            BaseEntity.Initialization(fsql, () => _asyncUow.Value);
 | 
					            BaseEntity.Initialization(fsql, () => _asyncUow.Value);
 | 
				
			||||||
            #endregion
 | 
								#endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var clickhouseSql1 = fsql.Select<User1>().Where(a => new[] { 1, 2, 3 }.Contains(a.GroupId)).ToSql();
 | 
					 | 
				
			||||||
            var clickhouseVal1 = new[] { 1, 2, 3 };
 | 
					 | 
				
			||||||
            var clickhouseSql2 = fsql.Select<User1>().Where(a => clickhouseVal1.Contains(a.GroupId)).ToSql();
 | 
					 | 
				
			||||||
            var clickhouseSql3 = fsql.Select<User1>().Where(a => a.Tags.Contains("tag1")).ToSql();
 | 
					 | 
				
			||||||
            var clickhouseVal2 = "tag2";
 | 
					 | 
				
			||||||
            var clickhouseSql4 = fsql.Select<User1>().Where(a => a.Tags.Contains(clickhouseVal2)).ToSql();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            fsql.Update<User1>()
 | 
								var list111222 = fsql.Select<OrderLine, Product>()
 | 
				
			||||||
 | 
								    .InnerJoin((l, p) => l.ProductId == p.ID)
 | 
				
			||||||
 | 
								    .GroupBy((l, p) => new { p.ID, ShopType = l.ShopType ?? 0 })
 | 
				
			||||||
 | 
								    .WithTempQuery(a => new
 | 
				
			||||||
 | 
								    {
 | 
				
			||||||
 | 
									    a.Key.ID,
 | 
				
			||||||
 | 
									    Money = a.Sum(a.Value.Item1.Amount) * a.Key.ShopType
 | 
				
			||||||
 | 
								    })
 | 
				
			||||||
 | 
								    .ToList();
 | 
				
			||||||
 | 
								Console.WriteLine(list111222);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								var list0x1sql = fsql.Select<OrderLine22x, Product22x>()
 | 
				
			||||||
 | 
					                .InnerJoin((l, p) => l.ProductId == p.ID)
 | 
				
			||||||
 | 
					                .GroupBy((l, p) => new { p.ID, l.ShopType })
 | 
				
			||||||
 | 
					                .WithTempQuery(a => new {
 | 
				
			||||||
 | 
						                a.Key.ID,
 | 
				
			||||||
 | 
						                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);
 | 
				
			||||||
 | 
								var sql1c2 = fsql.Select<User1>()
 | 
				
			||||||
 | 
									.GroupBy(a => new { a.Nickname, a.Avatar })
 | 
				
			||||||
 | 
									.WithTempQuery(b => new
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										sum = b.Sum(b.Value.Sort),
 | 
				
			||||||
 | 
										b.Key.Nickname,
 | 
				
			||||||
 | 
										b.Key.Avatar,
 | 
				
			||||||
 | 
									})
 | 
				
			||||||
 | 
									.OrderByDescending(arg => arg.sum)
 | 
				
			||||||
 | 
									.ToSql(arg => new
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										str1 = string.Concat(arg.Nickname, '-', arg.Avatar, '-'),
 | 
				
			||||||
 | 
										str2 = string.Concat(arg.Nickname, '-', arg.Avatar)
 | 
				
			||||||
 | 
									});   //报错 多括号
 | 
				
			||||||
 | 
										  //.ToOne(arg => string.Concat(arg.Nickname, '-', arg.Avatar)); //正常
 | 
				
			||||||
 | 
								Console.WriteLine(sql1c2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								//var clickhouseSql1 = fsql.Select<User1>().Where(a => new[] { 1, 2, 3 }.Contains(a.GroupId)).ToSql();
 | 
				
			||||||
 | 
								//         var clickhouseVal1 = new[] { 1, 2, 3 };
 | 
				
			||||||
 | 
								//         var clickhouseSql2 = fsql.Select<User1>().Where(a => clickhouseVal1.Contains(a.GroupId)).ToSql();
 | 
				
			||||||
 | 
								//         var clickhouseSql3 = fsql.Select<User1>().Where(a => a.Tags.Contains("tag1")).ToSql();
 | 
				
			||||||
 | 
								//         var clickhouseVal2 = "tag2";
 | 
				
			||||||
 | 
								//         var clickhouseSql4 = fsql.Select<User1>().Where(a => a.Tags.Contains(clickhouseVal2)).ToSql();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								fsql.Update<User1>()
 | 
				
			||||||
		        .Where(t => t.GroupId == 1)
 | 
							        .Where(t => t.GroupId == 1)
 | 
				
			||||||
		        .ExecuteUpdated();
 | 
							        .ExecuteUpdated();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -831,16 +870,6 @@ namespace base_entity
 | 
				
			|||||||
            fsql.UseJsonMap();
 | 
					            fsql.UseJsonMap();
 | 
				
			||||||
            fsql.Select<MiDevice>().Where(a => a.FormLocking == null).Count();
 | 
					            fsql.Select<MiDevice>().Where(a => a.FormLocking == null).Count();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var list0x1sql = fsql.Select<OrderLine22x, Product22x>()
 | 
					 | 
				
			||||||
.InnerJoin((l, p) => l.ProductId == p.ID)
 | 
					 | 
				
			||||||
.GroupBy((l, p) => new { p.ID, l.ShopType })
 | 
					 | 
				
			||||||
.WithTempQuery(a => new {
 | 
					 | 
				
			||||||
    a.Key.ID,
 | 
					 | 
				
			||||||
    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());
 | 
				
			||||||
@@ -1211,22 +1240,8 @@ var sql11111 = fsql.Select<Class1111>()
 | 
				
			|||||||
                .Set((a, b) => a.Nickname == "b.groupname")
 | 
					                .Set((a, b) => a.Nickname == "b.groupname")
 | 
				
			||||||
                .ExecuteAffrows();
 | 
					                .ExecuteAffrows();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var sql1c2 = fsql.Select<User1>()
 | 
					
 | 
				
			||||||
                .GroupBy(a => new { a.Nickname, a.Avatar })
 | 
								
 | 
				
			||||||
                .WithTempQuery(b => new
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    sum = b.Sum(b.Value.Sort),
 | 
					 | 
				
			||||||
                    b.Key.Nickname,
 | 
					 | 
				
			||||||
                    b.Key.Avatar,
 | 
					 | 
				
			||||||
                })
 | 
					 | 
				
			||||||
                .OrderByDescending(arg => arg.sum)
 | 
					 | 
				
			||||||
                .ToSql(arg => new
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    str1 = string.Concat(arg.Nickname, '-', arg.Avatar, '-'),
 | 
					 | 
				
			||||||
                    str2 = string.Concat(arg.Nickname, '-', arg.Avatar)
 | 
					 | 
				
			||||||
                });   //报错 多括号
 | 
					 | 
				
			||||||
                //.ToOne(arg => string.Concat(arg.Nickname, '-', arg.Avatar)); //正常
 | 
					 | 
				
			||||||
            Console.WriteLine(sql1c2);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var xp = new Xpb()
 | 
					            var xp = new Xpb()
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
@@ -3066,3 +3081,25 @@ public class Test2
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    public bool IsEnabled { get; set; }
 | 
					    public bool IsEnabled { get; set; }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					[JsonObject(MemberSerialization.OptIn), Table(Name = "T_OrderLine111222")]
 | 
				
			||||||
 | 
					public partial class OrderLine
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						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_Product111222")]
 | 
				
			||||||
 | 
					public partial class Product
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						public string ID { get; set; }
 | 
				
			||||||
 | 
						public string Name { get; set; }
 | 
				
			||||||
 | 
						public string Model { get; set; }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -739,15 +739,6 @@
 | 
				
			|||||||
            <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>
 | 
				
			||||||
            创建普通数据上下文档对象
 | 
					            创建普通数据上下文档对象
 | 
				
			||||||
@@ -806,14 +797,5 @@
 | 
				
			|||||||
            <param name="that"></param>
 | 
					            <param name="that"></param>
 | 
				
			||||||
            <returns></returns>
 | 
					            <returns></returns>
 | 
				
			||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
        <member name="M:Microsoft.Extensions.DependencyInjection.FreeSqlRepositoryDependencyInjection.AddFreeRepository(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action{FreeSql.FluentDataFilter},System.Reflection.Assembly[])">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            批量注入 Repository,可以参考代码自行调整
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="services"></param>
 | 
					 | 
				
			||||||
            <param name="globalDataFilter"></param>
 | 
					 | 
				
			||||||
            <param name="assemblies"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
    </members>
 | 
					    </members>
 | 
				
			||||||
</doc>
 | 
					</doc>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1104,82 +1104,6 @@
 | 
				
			|||||||
            </summary>
 | 
					            </summary>
 | 
				
			||||||
            <returns></returns>
 | 
					            <returns></returns>
 | 
				
			||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
        <member name="T:FreeSql.Extensions.DynamicEntity.DynamicCompileBuilder">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            动态创建实体类型
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.Extensions.DynamicEntity.DynamicCompileBuilder.#ctor(IFreeSql,System.String,System.Attribute[])">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            配置Class
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="className">类名</param>
 | 
					 | 
				
			||||||
            <param name="attributes">类标记的特性[Table(Name = "xxx")] [Index(xxxx)]</param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.Extensions.DynamicEntity.DynamicCompileBuilder.Property(System.String,System.Type,System.Attribute[])">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            配置属性
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="propertyName">属性名称</param>
 | 
					 | 
				
			||||||
            <param name="propertyType">属性类型</param>
 | 
					 | 
				
			||||||
            <param name="attributes">属性标记的特性-支持多个</param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.Extensions.DynamicEntity.DynamicCompileBuilder.Property(System.String,System.Type,System.Boolean,System.Attribute[])">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            配置属性
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="propertyName">属性名称</param>
 | 
					 | 
				
			||||||
            <param name="propertyType">属性类型</param>
 | 
					 | 
				
			||||||
            <param name="isOverride">该属性是否重写父类属性</param>
 | 
					 | 
				
			||||||
            <param name="attributes">属性标记的特性-支持多个</param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.Extensions.DynamicEntity.DynamicCompileBuilder.Property(System.String,System.Type,System.Boolean,System.Object,System.Attribute[])">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            配置属性
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="propertyName">属性名称</param>
 | 
					 | 
				
			||||||
            <param name="propertyType">属性类型</param>
 | 
					 | 
				
			||||||
            <param name="isOverride">该属性是否重写父类属性</param>
 | 
					 | 
				
			||||||
            <param name="defaultValue">属性默认值</param>
 | 
					 | 
				
			||||||
            <param name="attributes">属性标记的特性-支持多个</param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.Extensions.DynamicEntity.DynamicCompileBuilder.Extend(System.Type)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            配置父类
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="superClass">父类类型</param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.Extensions.DynamicEntity.DynamicCompileBuilder.OverrideProperty(System.Reflection.Emit.TypeBuilder@,System.Reflection.Emit.MethodBuilder,FreeSql.Extensions.DynamicEntity.DynamicCompileBuilder.PropertyMethodEnum,System.String)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            Override属性
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="typeBuilder"></param>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.Extensions.DynamicEntity.DynamicCompileBuilder.Build">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            Emit动态创建出Class - Type
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.Extensions.DynamicEntity.DynamicCompileBuilder.FirstCharToLower(System.String)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            首字母小写
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="input"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.Extensions.DynamicEntity.DynamicCompileBuilder.FirstCharToUpper(System.String)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            首字母大写
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="input"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.Extensions.EntityUtil.EntityUtilExtensions.GetEntityKeyString(IFreeSql,System.Type,System.Object,System.Boolean,System.String)">
 | 
					        <member name="M:FreeSql.Extensions.EntityUtil.EntityUtilExtensions.GetEntityKeyString(IFreeSql,System.Type,System.Object,System.Boolean,System.String)">
 | 
				
			||||||
            <summary>
 | 
					            <summary>
 | 
				
			||||||
            获取实体的主键值,以 "*|_,[,_|*" 分割,当任意一个主键属性无值时,返回 null
 | 
					            获取实体的主键值,以 "*|_,[,_|*" 分割,当任意一个主键属性无值时,返回 null
 | 
				
			||||||
@@ -5897,28 +5821,6 @@
 | 
				
			|||||||
            请使用 fsql.InsertDict(dict) 方法插入字典数据
 | 
					            请使用 fsql.InsertDict(dict) 方法插入字典数据
 | 
				
			||||||
            </summary>
 | 
					            </summary>
 | 
				
			||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
        <member name="M:FreeSqlGlobalDynamicEntityExtensions.DynamicEntity(FreeSql.ICodeFirst,System.String,System.Attribute[])">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            动态构建Class Type
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSqlGlobalDynamicEntityExtensions.CreateInstance(FreeSql.Internal.Model.TableInfo,System.Collections.Generic.Dictionary{System.String,System.Object})">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            根据字典,创建 table 对应的实体对象
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="table"></param>
 | 
					 | 
				
			||||||
            <param name="dict"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSqlGlobalDynamicEntityExtensions.CreateDictionary(FreeSql.Internal.Model.TableInfo,System.Object)">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            根据实体对象,创建 table 对应的字典
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="table"></param>
 | 
					 | 
				
			||||||
            <param name="instance"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSqlGlobalExpressionCallExtensions.Between(System.DateTime,System.DateTime,System.DateTime)">
 | 
					        <member name="M:FreeSqlGlobalExpressionCallExtensions.Between(System.DateTime,System.DateTime,System.DateTime)">
 | 
				
			||||||
            <summary>
 | 
					            <summary>
 | 
				
			||||||
            C#: that >= between && that <= and<para></para>
 | 
					            C#: that >= between && that <= and<para></para>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,6 +20,7 @@ namespace FreeSql.Internal.CommonProvider
 | 
				
			|||||||
        public List<SelectTableInfo> _tables;
 | 
					        public List<SelectTableInfo> _tables;
 | 
				
			||||||
        public int _groupByLimit, _groupBySkip;
 | 
					        public int _groupByLimit, _groupBySkip;
 | 
				
			||||||
        public bool _addFieldAlias;
 | 
					        public bool _addFieldAlias;
 | 
				
			||||||
 | 
					        public bool _flagNestedFieldAlias;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public SelectGroupingProvider(IFreeSql orm, Select0Provider select, ReadAnonymousTypeInfo map, string field, CommonExpression comonExp, List<SelectTableInfo> tables)
 | 
					        public SelectGroupingProvider(IFreeSql orm, Select0Provider select, ReadAnonymousTypeInfo map, string field, CommonExpression comonExp, List<SelectTableInfo> tables)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
@@ -53,6 +54,7 @@ namespace FreeSql.Internal.CommonProvider
 | 
				
			|||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    ParseExpMapResult = read;
 | 
					                    ParseExpMapResult = read;
 | 
				
			||||||
                    if (!_addFieldAlias) return read.DbField;
 | 
					                    if (!_addFieldAlias) return read.DbField;
 | 
				
			||||||
 | 
					                    if (_flagNestedFieldAlias) return read.DbField;
 | 
				
			||||||
                    if (_comonExp.EndsWithDbNestedField(read.DbField, read.DbNestedField) == false)
 | 
					                    if (_comonExp.EndsWithDbNestedField(read.DbField, read.DbNestedField) == false)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        _ParseExpOnlyDbField.Value = read.DbField;
 | 
					                        _ParseExpOnlyDbField.Value = read.DbField;
 | 
				
			||||||
@@ -252,7 +254,8 @@ namespace FreeSql.Internal.CommonProvider
 | 
				
			|||||||
            if (ret._tables[0].Table == null) ret._tables[0].Table = TableInfo.GetDefaultTable(typeof(TDto));
 | 
					            if (ret._tables[0].Table == null) ret._tables[0].Table = TableInfo.GetDefaultTable(typeof(TDto));
 | 
				
			||||||
            Select0Provider.WithTempQueryParser parser = null;
 | 
					            Select0Provider.WithTempQueryParser parser = null;
 | 
				
			||||||
            _addFieldAlias = true; //解决:[Column(Name = "flevel") 与属性名不一致时,嵌套查询 bug
 | 
					            _addFieldAlias = true; //解决:[Column(Name = "flevel") 与属性名不一致时,嵌套查询 bug
 | 
				
			||||||
            var old_field = _field;
 | 
					            _flagNestedFieldAlias = true;//解决重复设置别名问题:.GroupBy((l, p) => new { p.ID, ShopType=l.ShopType??0 }).WithTempQuery(a => new { Money = a.Sum(a.Value.Item1.Amount)* a.Key.ShopType })
 | 
				
			||||||
 | 
								var old_field = _field;
 | 
				
			||||||
            var fieldsb = new StringBuilder();
 | 
					            var fieldsb = new StringBuilder();
 | 
				
			||||||
            if (_map.Childs.Any() == false) fieldsb.Append(", ").Append(_map.DbField).Append(_comonExp.EndsWithDbNestedField(_map.DbField, _map.DbNestedField) ? "" : _comonExp._common.FieldAsAlias(_map.DbNestedField));
 | 
					            if (_map.Childs.Any() == false) fieldsb.Append(", ").Append(_map.DbField).Append(_comonExp.EndsWithDbNestedField(_map.DbField, _map.DbNestedField) ? "" : _comonExp._common.FieldAsAlias(_map.DbNestedField));
 | 
				
			||||||
            foreach (var child in _map.GetAllChilds()) 
 | 
					            foreach (var child in _map.GetAllChilds()) 
 | 
				
			||||||
@@ -268,7 +271,8 @@ namespace FreeSql.Internal.CommonProvider
 | 
				
			|||||||
                fieldsb.Clear();
 | 
					                fieldsb.Clear();
 | 
				
			||||||
                _field = old_field;
 | 
					                _field = old_field;
 | 
				
			||||||
                _addFieldAlias = false;
 | 
					                _addFieldAlias = false;
 | 
				
			||||||
            }
 | 
					                _flagNestedFieldAlias = false;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
            var sql = $"\r\n{this.ToSql(parser._insideSelectList[0].InsideField)}";
 | 
					            var sql = $"\r\n{this.ToSql(parser._insideSelectList[0].InsideField)}";
 | 
				
			||||||
            ret.WithSql(sql);
 | 
					            ret.WithSql(sql);
 | 
				
			||||||
            ret._diymemexpWithTempQuery = parser;
 | 
					            ret._diymemexpWithTempQuery = parser;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user