mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 09:15:27 +08:00 
			
		
		
		
	- 修复 ISelect.AsTable union all 查询对 count/max/min/avg/sum 的别名 bug;#157
This commit is contained in:
		@@ -110,6 +110,13 @@
 | 
				
			|||||||
            清空状态数据
 | 
					            清空状态数据
 | 
				
			||||||
            </summary>
 | 
					            </summary>
 | 
				
			||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:FreeSql.DbSet`1.RemoveAsync(System.Linq.Expressions.Expression{System.Func{`0,System.Boolean}})">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            根据 lambda 条件删除数据
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="predicate"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
        <member name="M:FreeSql.DbSet`1.Add(`0)">
 | 
					        <member name="M:FreeSql.DbSet`1.Add(`0)">
 | 
				
			||||||
            <summary>
 | 
					            <summary>
 | 
				
			||||||
            添加
 | 
					            添加
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -954,6 +954,21 @@ namespace FreeSql.Tests.MySqlConnector
 | 
				
			|||||||
            query = select.LeftJoin("TestTypeInfo b on b.Guid = a.TypeGuid and b.Name = ?bname", new { bname = "xxx" }).AsTable(tableRule);
 | 
					            query = select.LeftJoin("TestTypeInfo b on b.Guid = a.TypeGuid and b.Name = ?bname", new { bname = "xxx" }).AsTable(tableRule);
 | 
				
			||||||
            sql = query.ToSql().Replace("\r\n", "");
 | 
					            sql = query.ToSql().Replace("\r\n", "");
 | 
				
			||||||
            Assert.Equal("SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime` FROM `tb_topicAsTable1` a LEFT JOIN TestTypeInfo b on b.Guid = a.TypeGuid and b.Name = ?bname", sql);
 | 
					            Assert.Equal("SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime` FROM `tb_topicAsTable1` a LEFT JOIN TestTypeInfo b on b.Guid = a.TypeGuid and b.Name = ?bname", sql);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            query = select.AsTable((_, old) => old).AsTable((_, old) => old);
 | 
				
			||||||
 | 
					            sql = query.ToSql().Replace("\r\n", "");
 | 
				
			||||||
 | 
					            Assert.Equal("SELECT  * from (SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime` FROM `tb_topic` a) ftb UNION ALLSELECT  * from (SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime` FROM `tb_topic` a) ftb", sql);
 | 
				
			||||||
 | 
					            query.ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            query = select.AsTable((_, old) => old).AsTable((_, old) => old);
 | 
				
			||||||
 | 
					            sql = query.ToSql("count(1) as1").Replace("\r\n", "");
 | 
				
			||||||
 | 
					            Assert.Equal("SELECT  * from (SELECT count(1) as1 FROM `tb_topic` a) ftb UNION ALLSELECT  * from (SELECT count(1) as1 FROM `tb_topic` a) ftb", sql);
 | 
				
			||||||
 | 
					            query.Count();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Min(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Sum(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Avg(a => a.Id);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public class TestInclude_OneToManyModel1
 | 
					        public class TestInclude_OneToManyModel1
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -881,6 +881,21 @@ namespace FreeSql.Tests.Odbc.Dameng
 | 
				
			|||||||
            query = select.LeftJoin("\"TESTTYPEINFO\" b on b.\"GUID\" = a.\"TYPEGUID\" and b.\"NAME\" = :bname", new { bname = "xxx" }).AsTable(tableRule);
 | 
					            query = select.LeftJoin("\"TESTTYPEINFO\" b on b.\"GUID\" = a.\"TYPEGUID\" and b.\"NAME\" = :bname", new { bname = "xxx" }).AsTable(tableRule);
 | 
				
			||||||
            sql = query.ToSql().Replace("\r\n", "");
 | 
					            sql = query.ToSql().Replace("\r\n", "");
 | 
				
			||||||
            Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22_T1\" a LEFT JOIN \"TESTTYPEINFO\" b on b.\"GUID\" = a.\"TYPEGUID\" and b.\"NAME\" = :bname", sql);
 | 
					            Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22_T1\" a LEFT JOIN \"TESTTYPEINFO\" b on b.\"GUID\" = a.\"TYPEGUID\" and b.\"NAME\" = :bname", sql);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            query = select.AsTable((_, old) => old).AsTable((_, old) => old);
 | 
				
			||||||
 | 
					            sql = query.ToSql().Replace("\r\n", "");
 | 
				
			||||||
 | 
					            Assert.Equal("SELECT  * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb UNION ALLSELECT  * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb", sql);
 | 
				
			||||||
 | 
					            query.ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            query = select.AsTable((_, old) => old).AsTable((_, old) => old);
 | 
				
			||||||
 | 
					            sql = query.ToSql("count(1) as1").Replace("\r\n", "");
 | 
				
			||||||
 | 
					            Assert.Equal("SELECT  * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb UNION ALLSELECT  * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb", sql);
 | 
				
			||||||
 | 
					            query.Count();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Min(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Sum(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Avg(a => a.Id);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public class TiOtmModel1
 | 
					        public class TiOtmModel1
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -850,6 +850,21 @@ namespace FreeSql.Tests.Odbc.Default
 | 
				
			|||||||
            query = select.LeftJoin("TestTypeInfo b on b.Guid = a.TypeGuid and b.Name = @bname", new { bname = "xxx" }).AsTable(tableRule);
 | 
					            query = select.LeftJoin("TestTypeInfo b on b.Guid = a.TypeGuid and b.Name = @bname", new { bname = "xxx" }).AsTable(tableRule);
 | 
				
			||||||
            sql = query.ToSql().Replace("\r\n", "");
 | 
					            sql = query.ToSql().Replace("\r\n", "");
 | 
				
			||||||
            Assert.Equal("SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime] FROM [tb_topic22AsTable1] a LEFT JOIN TestTypeInfo b on b.Guid = a.TypeGuid and b.Name = @bname", sql);
 | 
					            Assert.Equal("SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime] FROM [tb_topic22AsTable1] a LEFT JOIN TestTypeInfo b on b.Guid = a.TypeGuid and b.Name = @bname", sql);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            query = select.AsTable((_, old) => old).AsTable((_, old) => old);
 | 
				
			||||||
 | 
					            sql = query.ToSql().Replace("\r\n", "");
 | 
				
			||||||
 | 
					            Assert.Equal("SELECT  * from (SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime] FROM [tb_topic22] a) ftb UNION ALLSELECT  * from (SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime] FROM [tb_topic22] a) ftb", sql);
 | 
				
			||||||
 | 
					            query.ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            query = select.AsTable((_, old) => old).AsTable((_, old) => old);
 | 
				
			||||||
 | 
					            sql = query.ToSql("count(1) as1").Replace("\r\n", "");
 | 
				
			||||||
 | 
					            Assert.Equal("SELECT  * from (SELECT count(1) as1 FROM [tb_topic22] a) ftb UNION ALLSELECT  * from (SELECT count(1) as1 FROM [tb_topic22] a) ftb", sql);
 | 
				
			||||||
 | 
					            query.Count();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Min(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Sum(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Avg(a => a.Id);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public class TestInclude_OneToManyModel1
 | 
					        public class TestInclude_OneToManyModel1
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -965,6 +965,21 @@ namespace FreeSql.Tests.Odbc.MySql
 | 
				
			|||||||
            query = select.LeftJoin("TestTypeInfo b on b.Guid = a.TypeGuid and b.Name = ?bname", new { bname = "xxx" }).AsTable(tableRule);
 | 
					            query = select.LeftJoin("TestTypeInfo b on b.Guid = a.TypeGuid and b.Name = ?bname", new { bname = "xxx" }).AsTable(tableRule);
 | 
				
			||||||
            sql = query.ToSql().Replace("\r\n", "");
 | 
					            sql = query.ToSql().Replace("\r\n", "");
 | 
				
			||||||
            Assert.Equal("SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime` FROM `tb_topicAsTable1` a LEFT JOIN TestTypeInfo b on b.Guid = a.TypeGuid and b.Name = ?bname", sql);
 | 
					            Assert.Equal("SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime` FROM `tb_topicAsTable1` a LEFT JOIN TestTypeInfo b on b.Guid = a.TypeGuid and b.Name = ?bname", sql);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            query = select.AsTable((_, old) => old).AsTable((_, old) => old);
 | 
				
			||||||
 | 
					            sql = query.ToSql().Replace("\r\n", "");
 | 
				
			||||||
 | 
					            Assert.Equal("SELECT  * from (SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime` FROM `tb_topic` a) ftb UNION ALLSELECT  * from (SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime` FROM `tb_topic` a) ftb", sql);
 | 
				
			||||||
 | 
					            query.ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            query = select.AsTable((_, old) => old).AsTable((_, old) => old);
 | 
				
			||||||
 | 
					            sql = query.ToSql("count(1) as1").Replace("\r\n", "");
 | 
				
			||||||
 | 
					            Assert.Equal("SELECT  * from (SELECT count(1) as1 FROM `tb_topic` a) ftb UNION ALLSELECT  * from (SELECT count(1) as1 FROM `tb_topic` a) ftb", sql);
 | 
				
			||||||
 | 
					            query.Count();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Min(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Sum(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Avg(a => a.Id);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public class TestInclude_OneToManyModel1
 | 
					        public class TestInclude_OneToManyModel1
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -881,6 +881,21 @@ namespace FreeSql.Tests.Odbc.Oracle
 | 
				
			|||||||
            query = select.LeftJoin("\"TESTTYPEINFO\" b on b.\"GUID\" = a.\"TYPEGUID\" and b.\"NAME\" = :bname", new { bname = "xxx" }).AsTable(tableRule);
 | 
					            query = select.LeftJoin("\"TESTTYPEINFO\" b on b.\"GUID\" = a.\"TYPEGUID\" and b.\"NAME\" = :bname", new { bname = "xxx" }).AsTable(tableRule);
 | 
				
			||||||
            sql = query.ToSql().Replace("\r\n", "");
 | 
					            sql = query.ToSql().Replace("\r\n", "");
 | 
				
			||||||
            Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22_T1\" a LEFT JOIN \"TESTTYPEINFO\" b on b.\"GUID\" = a.\"TYPEGUID\" and b.\"NAME\" = :bname", sql);
 | 
					            Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22_T1\" a LEFT JOIN \"TESTTYPEINFO\" b on b.\"GUID\" = a.\"TYPEGUID\" and b.\"NAME\" = :bname", sql);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            query = select.AsTable((_, old) => old).AsTable((_, old) => old);
 | 
				
			||||||
 | 
					            sql = query.ToSql().Replace("\r\n", "");
 | 
				
			||||||
 | 
					            Assert.Equal("SELECT  * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb UNION ALLSELECT  * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb", sql);
 | 
				
			||||||
 | 
					            query.ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            query = select.AsTable((_, old) => old).AsTable((_, old) => old);
 | 
				
			||||||
 | 
					            sql = query.ToSql("count(1) as1").Replace("\r\n", "");
 | 
				
			||||||
 | 
					            Assert.Equal("SELECT  * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb UNION ALLSELECT  * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb", sql);
 | 
				
			||||||
 | 
					            query.Count();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Min(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Sum(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Avg(a => a.Id);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public class TiOtmModel1
 | 
					        public class TiOtmModel1
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -937,6 +937,21 @@ namespace FreeSql.Tests.Odbc.PostgreSQL
 | 
				
			|||||||
            query = select.LeftJoin("\"testtypeinfo\" b on b.\"guid\" = a.\"typeguid\" and b.\"name\" = @bname", new { bname = "xxx" }).AsTable(tableRule);
 | 
					            query = select.LeftJoin("\"testtypeinfo\" b on b.\"guid\" = a.\"typeguid\" and b.\"name\" = @bname", new { bname = "xxx" }).AsTable(tableRule);
 | 
				
			||||||
            sql = query.ToSql().Replace("\r\n", "");
 | 
					            sql = query.ToSql().Replace("\r\n", "");
 | 
				
			||||||
            Assert.Equal("SELECT a.\"id\", a.\"clicks\", a.\"typeguid\", a.\"title\", a.\"createtime\" FROM \"tb_topicastable1\" a LEFT JOIN \"testtypeinfo\" b on b.\"guid\" = a.\"typeguid\" and b.\"name\" = @bname", sql);
 | 
					            Assert.Equal("SELECT a.\"id\", a.\"clicks\", a.\"typeguid\", a.\"title\", a.\"createtime\" FROM \"tb_topicastable1\" a LEFT JOIN \"testtypeinfo\" b on b.\"guid\" = a.\"typeguid\" and b.\"name\" = @bname", sql);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            query = select.AsTable((_, old) => old).AsTable((_, old) => old);
 | 
				
			||||||
 | 
					            sql = query.ToSql().Replace("\r\n", "");
 | 
				
			||||||
 | 
					            Assert.Equal("SELECT  * from (SELECT a.\"id\", a.\"clicks\", a.\"typeguid\", a.\"title\", a.\"createtime\" FROM \"tb_topic\" a) ftb UNION ALLSELECT  * from (SELECT a.\"id\", a.\"clicks\", a.\"typeguid\", a.\"title\", a.\"createtime\" FROM \"tb_topic\" a) ftb", sql);
 | 
				
			||||||
 | 
					            query.ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            query = select.AsTable((_, old) => old).AsTable((_, old) => old);
 | 
				
			||||||
 | 
					            sql = query.ToSql("count(1) as1").Replace("\r\n", "");
 | 
				
			||||||
 | 
					            Assert.Equal("SELECT  * from (SELECT count(1) as1 FROM \"tb_topic\" a) ftb UNION ALLSELECT  * from (SELECT count(1) as1 FROM \"tb_topic\" a) ftb", sql);
 | 
				
			||||||
 | 
					            query.Count();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Min(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Sum(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Avg(a => a.Id);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public class TestInclude_OneToManyModel1
 | 
					        public class TestInclude_OneToManyModel1
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -831,6 +831,21 @@ namespace FreeSql.Tests.Odbc.SqlServer
 | 
				
			|||||||
            query = select.LeftJoin("TestTypeInfo b on b.Guid = a.TypeGuid and b.Name = @bname", new { bname = "xxx" }).AsTable(tableRule);
 | 
					            query = select.LeftJoin("TestTypeInfo b on b.Guid = a.TypeGuid and b.Name = @bname", new { bname = "xxx" }).AsTable(tableRule);
 | 
				
			||||||
            sql = query.ToSql().Replace("\r\n", "");
 | 
					            sql = query.ToSql().Replace("\r\n", "");
 | 
				
			||||||
            Assert.Equal("SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime] FROM [tb_topic22AsTable1] a LEFT JOIN TestTypeInfo b on b.Guid = a.TypeGuid and b.Name = @bname", sql);
 | 
					            Assert.Equal("SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime] FROM [tb_topic22AsTable1] a LEFT JOIN TestTypeInfo b on b.Guid = a.TypeGuid and b.Name = @bname", sql);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            query = select.AsTable((_, old) => old).AsTable((_, old) => old);
 | 
				
			||||||
 | 
					            sql = query.ToSql().Replace("\r\n", "");
 | 
				
			||||||
 | 
					            Assert.Equal("SELECT  * from (SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime] FROM [tb_topic22] a) ftb UNION ALLSELECT  * from (SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime] FROM [tb_topic22] a) ftb", sql);
 | 
				
			||||||
 | 
					            query.ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            query = select.AsTable((_, old) => old).AsTable((_, old) => old);
 | 
				
			||||||
 | 
					            sql = query.ToSql("count(1) as1").Replace("\r\n", "");
 | 
				
			||||||
 | 
					            Assert.Equal("SELECT  * from (SELECT count(1) as1 FROM [tb_topic22] a) ftb UNION ALLSELECT  * from (SELECT count(1) as1 FROM [tb_topic22] a) ftb", sql);
 | 
				
			||||||
 | 
					            query.Count();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Min(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Sum(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Avg(a => a.Id);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public class TestInclude_OneToManyModel1
 | 
					        public class TestInclude_OneToManyModel1
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -996,6 +996,21 @@ namespace FreeSql.Tests.MySql
 | 
				
			|||||||
            query = select.LeftJoin("TestTypeInfo b on b.Guid = a.TypeGuid and b.Name = ?bname", new { bname = "xxx" }).AsTable(tableRule);
 | 
					            query = select.LeftJoin("TestTypeInfo b on b.Guid = a.TypeGuid and b.Name = ?bname", new { bname = "xxx" }).AsTable(tableRule);
 | 
				
			||||||
            sql = query.ToSql().Replace("\r\n", "");
 | 
					            sql = query.ToSql().Replace("\r\n", "");
 | 
				
			||||||
            Assert.Equal("SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime` FROM `tb_topicAsTable1` a LEFT JOIN TestTypeInfo b on b.Guid = a.TypeGuid and b.Name = ?bname", sql);
 | 
					            Assert.Equal("SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime` FROM `tb_topicAsTable1` a LEFT JOIN TestTypeInfo b on b.Guid = a.TypeGuid and b.Name = ?bname", sql);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            query = select.AsTable((_, old) => old).AsTable((_, old) => old);
 | 
				
			||||||
 | 
					            sql = query.ToSql().Replace("\r\n", "");
 | 
				
			||||||
 | 
					            Assert.Equal("SELECT  * from (SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime` FROM `tb_topic` a) ftb UNION ALLSELECT  * from (SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime` FROM `tb_topic` a) ftb", sql);
 | 
				
			||||||
 | 
					            query.ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            query = select.AsTable((_, old) => old).AsTable((_, old) => old);
 | 
				
			||||||
 | 
					            sql = query.ToSql("count(1) as1").Replace("\r\n", "");
 | 
				
			||||||
 | 
					            Assert.Equal("SELECT  * from (SELECT count(1) as1 FROM `tb_topic` a) ftb UNION ALLSELECT  * from (SELECT count(1) as1 FROM `tb_topic` a) ftb", sql);
 | 
				
			||||||
 | 
					            query.Count();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Min(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Sum(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Avg(a => a.Id);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public class TestInclude_OneToManyModel1
 | 
					        public class TestInclude_OneToManyModel1
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -881,6 +881,21 @@ namespace FreeSql.Tests.Oracle
 | 
				
			|||||||
            query = select.LeftJoin("\"TESTTYPEINFO\" b on b.\"GUID\" = a.\"TYPEGUID\" and b.\"NAME\" = :bname", new { bname = "xxx" }).AsTable(tableRule);
 | 
					            query = select.LeftJoin("\"TESTTYPEINFO\" b on b.\"GUID\" = a.\"TYPEGUID\" and b.\"NAME\" = :bname", new { bname = "xxx" }).AsTable(tableRule);
 | 
				
			||||||
            sql = query.ToSql().Replace("\r\n", "");
 | 
					            sql = query.ToSql().Replace("\r\n", "");
 | 
				
			||||||
            Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22_T1\" a LEFT JOIN \"TESTTYPEINFO\" b on b.\"GUID\" = a.\"TYPEGUID\" and b.\"NAME\" = :bname", sql);
 | 
					            Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22_T1\" a LEFT JOIN \"TESTTYPEINFO\" b on b.\"GUID\" = a.\"TYPEGUID\" and b.\"NAME\" = :bname", sql);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            query = select.AsTable((_, old) => old).AsTable((_, old) => old);
 | 
				
			||||||
 | 
					            sql = query.ToSql().Replace("\r\n", "");
 | 
				
			||||||
 | 
					            Assert.Equal("SELECT  * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb UNION ALLSELECT  * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb", sql);
 | 
				
			||||||
 | 
					            query.ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            query = select.AsTable((_, old) => old).AsTable((_, old) => old);
 | 
				
			||||||
 | 
					            sql = query.ToSql("count(1) as1").Replace("\r\n", "");
 | 
				
			||||||
 | 
					            Assert.Equal("SELECT  * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb UNION ALLSELECT  * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb", sql);
 | 
				
			||||||
 | 
					            query.Count();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Min(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Sum(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Avg(a => a.Id);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public class TiOtmModel1
 | 
					        public class TiOtmModel1
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -954,6 +954,21 @@ namespace FreeSql.Tests.PostgreSQL
 | 
				
			|||||||
            query = select.LeftJoin("\"testtypeinfo\" b on b.\"guid\" = a.\"typeguid\" and b.\"name\" = @bname", new { bname = "xxx" }).AsTable(tableRule);
 | 
					            query = select.LeftJoin("\"testtypeinfo\" b on b.\"guid\" = a.\"typeguid\" and b.\"name\" = @bname", new { bname = "xxx" }).AsTable(tableRule);
 | 
				
			||||||
            sql = query.ToSql().Replace("\r\n", "");
 | 
					            sql = query.ToSql().Replace("\r\n", "");
 | 
				
			||||||
            Assert.Equal("SELECT a.\"id\", a.\"clicks\", a.\"typeguid\", a.\"title\", a.\"createtime\" FROM \"tb_topicastable1\" a LEFT JOIN \"testtypeinfo\" b on b.\"guid\" = a.\"typeguid\" and b.\"name\" = @bname", sql);
 | 
					            Assert.Equal("SELECT a.\"id\", a.\"clicks\", a.\"typeguid\", a.\"title\", a.\"createtime\" FROM \"tb_topicastable1\" a LEFT JOIN \"testtypeinfo\" b on b.\"guid\" = a.\"typeguid\" and b.\"name\" = @bname", sql);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            query = select.AsTable((_, old) => old).AsTable((_, old) => old);
 | 
				
			||||||
 | 
					            sql = query.ToSql().Replace("\r\n", "");
 | 
				
			||||||
 | 
					            Assert.Equal("SELECT  * from (SELECT a.\"id\", a.\"clicks\", a.\"typeguid\", a.\"title\", a.\"createtime\" FROM \"tb_topic\" a) ftb UNION ALLSELECT  * from (SELECT a.\"id\", a.\"clicks\", a.\"typeguid\", a.\"title\", a.\"createtime\" FROM \"tb_topic\" a) ftb", sql);
 | 
				
			||||||
 | 
					            query.ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            query = select.AsTable((_, old) => old).AsTable((_, old) => old);
 | 
				
			||||||
 | 
					            sql = query.ToSql("count(1) as1").Replace("\r\n", "");
 | 
				
			||||||
 | 
					            Assert.Equal("SELECT  * from (SELECT count(1) as1 FROM \"tb_topic\" a) ftb UNION ALLSELECT  * from (SELECT count(1) as1 FROM \"tb_topic\" a) ftb", sql);
 | 
				
			||||||
 | 
					            query.Count();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Min(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Sum(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Avg(a => a.Id);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public class TestInclude_OneToManyModel1
 | 
					        public class TestInclude_OneToManyModel1
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -876,6 +876,21 @@ namespace FreeSql.Tests.SqlServer
 | 
				
			|||||||
            query = select.LeftJoin("TestTypeInfo b on b.Guid = a.TypeGuid and b.Name = @bname", new { bname = "xxx" }).AsTable(tableRule);
 | 
					            query = select.LeftJoin("TestTypeInfo b on b.Guid = a.TypeGuid and b.Name = @bname", new { bname = "xxx" }).AsTable(tableRule);
 | 
				
			||||||
            sql = query.ToSql().Replace("\r\n", "");
 | 
					            sql = query.ToSql().Replace("\r\n", "");
 | 
				
			||||||
            Assert.Equal("SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime] FROM [tb_topic22AsTable1] a LEFT JOIN TestTypeInfo b on b.Guid = a.TypeGuid and b.Name = @bname", sql);
 | 
					            Assert.Equal("SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime] FROM [tb_topic22AsTable1] a LEFT JOIN TestTypeInfo b on b.Guid = a.TypeGuid and b.Name = @bname", sql);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            query = select.AsTable((_, old) => old).AsTable((_, old) => old);
 | 
				
			||||||
 | 
					            sql = query.ToSql().Replace("\r\n", "");
 | 
				
			||||||
 | 
					            Assert.Equal("SELECT  * from (SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime] FROM [tb_topic22] a) ftb UNION ALLSELECT  * from (SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime] FROM [tb_topic22] a) ftb", sql);
 | 
				
			||||||
 | 
					            query.ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            query = select.AsTable((_, old) => old).AsTable((_, old) => old);
 | 
				
			||||||
 | 
					            sql = query.ToSql("count(1) as1").Replace("\r\n", "");
 | 
				
			||||||
 | 
					            Assert.Equal("SELECT  * from (SELECT count(1) as1 FROM [tb_topic22] a) ftb UNION ALLSELECT  * from (SELECT count(1) as1 FROM [tb_topic22] a) ftb", sql);
 | 
				
			||||||
 | 
					            query.Count();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Min(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Sum(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Avg(a => a.Id);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public class TestInclude_OneToManyModel1
 | 
					        public class TestInclude_OneToManyModel1
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -865,6 +865,21 @@ namespace FreeSql.Tests.Sqlite
 | 
				
			|||||||
            query = select.LeftJoin("\"TestTypeInfo\" b on b.\"Guid\" = a.\"TypeGuid\" and b.\"Name\" = @bname", new { bname = "xxx" }).AsTable(tableRule);
 | 
					            query = select.LeftJoin("\"TestTypeInfo\" b on b.\"Guid\" = a.\"TypeGuid\" and b.\"Name\" = @bname", new { bname = "xxx" }).AsTable(tableRule);
 | 
				
			||||||
            sql = query.ToSql().Replace("\r\n", "");
 | 
					            sql = query.ToSql().Replace("\r\n", "");
 | 
				
			||||||
            Assert.Equal("SELECT a.\"Id\", a.\"Clicks\", a.\"TypeGuid\", a.\"Title\", a.\"CreateTime\" FROM \"tb_topic22AsTable1\" a LEFT JOIN \"TestTypeInfo\" b on b.\"Guid\" = a.\"TypeGuid\" and b.\"Name\" = @bname", sql);
 | 
					            Assert.Equal("SELECT a.\"Id\", a.\"Clicks\", a.\"TypeGuid\", a.\"Title\", a.\"CreateTime\" FROM \"tb_topic22AsTable1\" a LEFT JOIN \"TestTypeInfo\" b on b.\"Guid\" = a.\"TypeGuid\" and b.\"Name\" = @bname", sql);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            query = select.AsTable((_, old) => old).AsTable((_, old) => old);
 | 
				
			||||||
 | 
					            sql = query.ToSql().Replace("\r\n", "");
 | 
				
			||||||
 | 
					            Assert.Equal("SELECT  * from (SELECT a.\"Id\", a.\"Clicks\", a.\"TypeGuid\", a.\"Title\", a.\"CreateTime\" FROM \"tb_topic22\" a) ftb UNION ALLSELECT  * from (SELECT a.\"Id\", a.\"Clicks\", a.\"TypeGuid\", a.\"Title\", a.\"CreateTime\" FROM \"tb_topic22\" a) ftb", sql);
 | 
				
			||||||
 | 
					            query.ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            query = select.AsTable((_, old) => old).AsTable((_, old) => old);
 | 
				
			||||||
 | 
					            sql = query.ToSql("count(1) as1").Replace("\r\n", "");
 | 
				
			||||||
 | 
					            Assert.Equal("SELECT  * from (SELECT count(1) as1 FROM \"tb_topic22\" a) ftb UNION ALLSELECT  * from (SELECT count(1) as1 FROM \"tb_topic22\" a) ftb", sql);
 | 
				
			||||||
 | 
					            query.Count();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Min(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Sum(a => a.Id);
 | 
				
			||||||
 | 
					            select.AsTable((_, old) => old).AsTable((_, old) => old).Avg(a => a.Id);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public class TestInclude_OneToManyModel1
 | 
					        public class TestInclude_OneToManyModel1
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2257,193 +2257,7 @@
 | 
				
			|||||||
            <returns></returns>
 | 
					            <returns></returns>
 | 
				
			||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
        <member name="P:FreeSql.IAop.ParseExpression">
 | 
					        <member name="P:FreeSql.IAop.ParseExpression">
 | 
				
			||||||
            <summary>
 | 
					            <sum环境必备】自动同步实体结构到数据库,程序运行中检查实体表是否存在,然后创建或修改
 | 
				
			||||||
            可自定义解析表达式
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.IAop.ConfigEntity">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            自定义实体的配置,方便和多个 ORM 共同使用
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.IAop.ConfigEntityProperty">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            自定义实体的属性配置,方便和多个 ORM 共同使用
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.IAop.CurdBefore">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            增删查改,执行命令之前触发
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.IAop.CurdAfter">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            增删查改,执行命令完成后触发
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.IAop.SyncStructureBefore">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            CodeFirst迁移,执行之前触发
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.IAop.SyncStructureAfter">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            CodeFirst迁移,执行完成触发
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.IAop.AuditValue">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            Insert/Update自动值处理
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.ParseExpressionEventArgs.FreeParse">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            内置解析功能,可辅助您进行解析
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.ParseExpressionEventArgs.Expression">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            需要您解析的表达式
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.ParseExpressionEventArgs.Result">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            解析后的内容
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.ConfigEntityEventArgs.EntityType">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            实体类型
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.ConfigEntityEventArgs.ModifyResult">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            实体配置
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.ConfigEntityEventArgs.ModifyIndexResult">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            索引配置
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.ConfigEntityPropertyEventArgs.EntityType">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            实体类型
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.ConfigEntityPropertyEventArgs.Property">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            实体的属性
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.ConfigEntityPropertyEventArgs.ModifyResult">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            实体的属性配置
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.CurdBeforeEventArgs.Identifier">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            标识符,可将 CurdBefore 与 CurdAfter 进行匹配
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.CurdBeforeEventArgs.CurdType">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            操作类型
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.CurdBeforeEventArgs.EntityType">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            实体类型
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.CurdBeforeEventArgs.Table">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            实体类型的元数据
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.CurdBeforeEventArgs.Sql">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            执行的 SQL
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.CurdBeforeEventArgs.DbParms">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            参数化命令
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.CurdAfterEventArgs.Exception">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            发生的错误
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.CurdAfterEventArgs.ExecuteResult">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            执行SQL命令,返回的结果
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.CurdAfterEventArgs.ElapsedTicks">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            耗时(单位:Ticks)
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.CurdAfterEventArgs.ElapsedMilliseconds">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            耗时(单位:毫秒)
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.SyncStructureBeforeEventArgs.Identifier">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            标识符,可将 SyncStructureBeforeEventArgs 与 SyncStructureAfterEventArgs 进行匹配
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.SyncStructureBeforeEventArgs.EntityTypes">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            实体类型
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.SyncStructureAfterEventArgs.Sql">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            执行的 SQL
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.SyncStructureAfterEventArgs.Exception">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            发生的错误
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.SyncStructureAfterEventArgs.ElapsedTicks">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            耗时(单位:Ticks)
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.SyncStructureAfterEventArgs.ElapsedMilliseconds">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            耗时(单位:毫秒)
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.AuditValueEventArgs.AuditValueType">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            类型
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.AuditValueEventArgs.Column">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            属性列的元数据
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.AuditValueEventArgs.Property">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            反射的属性信息
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.AuditValueEventArgs.Value">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            获取实体的属性值,也可以设置实体的属性新值
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.ICodeFirst.IsAutoSyncStructure">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            【开发环境必备】自动同步实体结构到数据库,程序运行中检查实体表是否存在,然后创建或修改
 | 
					 | 
				
			||||||
            </summary>
 | 
					            </summary>
 | 
				
			||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
        <member name="P:FreeSql.ICodeFirst.IsSyncStructureToLower">
 | 
					        <member name="P:FreeSql.ICodeFirst.IsSyncStructureToLower">
 | 
				
			||||||
@@ -3034,3 +2848,160 @@
 | 
				
			|||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
    </members>
 | 
					    </members>
 | 
				
			||||||
</doc>
 | 
					</doc>
 | 
				
			||||||
 | 
					unc{``0,System.Boolean}},System.Boolean,System.Linq.Expressions.Expression{System.Func{``0,System.Boolean}})">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            使用 or 拼接两个 lambda 表达式
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <typeparam name="T"></typeparam>
 | 
				
			||||||
 | 
					            <param name="exp1"></param>
 | 
				
			||||||
 | 
					            <param name="condition">true 时生效</param>
 | 
				
			||||||
 | 
					            <param name="exp2"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:System.Linq.Expressions.LambadaExpressionExtensions.Not``1(System.Linq.Expressions.Expression{System.Func{``0,System.Boolean}},System.Boolean)">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            将 lambda 表达式取反
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <typeparam name="T"></typeparam>
 | 
				
			||||||
 | 
					            <param name="exp"></param>
 | 
				
			||||||
 | 
					            <param name="condition">true 时生效</param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:FreeUtil.NewMongodbId">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            生成类似Mongodb的ObjectId有序、不重复Guid
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IFreeSql.Insert``1">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            插入数据
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <typeparam name="T1"></typeparam>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IFreeSql.Insert``1(``0)">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            插入数据,传入实体
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <typeparam name="T1"></typeparam>
 | 
				
			||||||
 | 
					            <param name="source"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IFreeSql.Insert``1(``0[])">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            插入数据,传入实体数组
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <typeparam name="T1"></typeparam>
 | 
				
			||||||
 | 
					            <param name="source"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IFreeSql.Insert``1(System.Collections.Generic.List{``0})">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            插入数据,传入实体集合
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <typeparam name="T1"></typeparam>
 | 
				
			||||||
 | 
					            <param name="source"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IFreeSql.Insert``1(System.Collections.Generic.IEnumerable{``0})">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            插入数据,传入实体集合
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <typeparam name="T1"></typeparam>
 | 
				
			||||||
 | 
					            <param name="source"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IFreeSql.Update``1">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            修改数据
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <typeparam name="T1"></typeparam>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IFreeSql.Update``1(System.Object)">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            修改数据,传入动态对象如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1}
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <typeparam name="T1"></typeparam>
 | 
				
			||||||
 | 
					            <param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IFreeSql.Select``1">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            查询数据
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <typeparam name="T1"></typeparam>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IFreeSql.Select``1(System.Object)">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            查询数据,传入动态对象如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1}
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <typeparam name="T1"></typeparam>
 | 
				
			||||||
 | 
					            <param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IFreeSql.Delete``1">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            删除数据
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <typeparam name="T1"></typeparam>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IFreeSql.Delete``1(System.Object)">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            删除数据,传入动态对象如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1}
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <typeparam name="T1"></typeparam>
 | 
				
			||||||
 | 
					            <param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IFreeSql.Transaction(System.Action)">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            开启事务(不支持异步),60秒未执行完成(可能)被其他线程事务自动提交
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="handler">事务体 () => {}</param>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IFreeSql.Transaction(System.TimeSpan,System.Action)">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            开启事务(不支持异步)
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="timeout">超时,未执行完成(可能)被其他线程事务自动提交</param>
 | 
				
			||||||
 | 
					            <param name="handler">事务体 () => {}</param>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IFreeSql.Transaction(System.Data.IsolationLevel,System.TimeSpan,System.Action)">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            开启事务(不支持异步)
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="isolationLevel"></param>
 | 
				
			||||||
 | 
					            <param name="handler">事务体 () => {}</param>
 | 
				
			||||||
 | 
					            <param name="timeout">超时,未执行完成(可能)被其他线程事务自动提交</param>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:IFreeSql.Ado">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            数据库访问对象
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:IFreeSql.Aop">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            所有拦截方法都在这里
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:IFreeSql.CodeFirst">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            CodeFirst 模式开发相关方法
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:IFreeSql.DbFirst">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            DbFirst 模式开发相关方法
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:IFreeSql.GlobalFilter">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            全局过滤设置,可默认附加为 Select/Update/Delete 条件
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					    </members>
 | 
				
			||||||
 | 
					</doc>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -155,10 +155,10 @@ namespace FreeSql.Internal.CommonProvider
 | 
				
			|||||||
        public bool Any()
 | 
					        public bool Any()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            this.Limit(1);
 | 
					            this.Limit(1);
 | 
				
			||||||
            return this.ToList<int>("1").FirstOrDefault() == 1;
 | 
					            return this.ToList<int>("1 as1").FirstOrDefault() == 1;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public long Count() => this.ToList<int>("count(1)").FirstOrDefault();
 | 
					        public long Count() => this.ToList<int>("count(1) as1").FirstOrDefault();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public TSelect Count(out long count)
 | 
					        public TSelect Count(out long count)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
@@ -1023,10 +1023,10 @@ namespace FreeSql.Internal.CommonProvider
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
        #region common
 | 
					        #region common
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        protected TMember InternalAvg<TMember>(Expression exp) => this.ToList<TMember>($"avg({_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, null, SelectTableInfoType.From, exp, true, null)})").FirstOrDefault();
 | 
					        protected TMember InternalAvg<TMember>(Expression exp) => this.ToList<TMember>($"avg({_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, null, SelectTableInfoType.From, exp, true, null)}) as1").FirstOrDefault();
 | 
				
			||||||
        protected TMember InternalMax<TMember>(Expression exp) => this.ToList<TMember>($"max({_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, null, SelectTableInfoType.From, exp, true, null)})").FirstOrDefault();
 | 
					        protected TMember InternalMax<TMember>(Expression exp) => this.ToList<TMember>($"max({_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, null, SelectTableInfoType.From, exp, true, null)}) as1").FirstOrDefault();
 | 
				
			||||||
        protected TMember InternalMin<TMember>(Expression exp) => this.ToList<TMember>($"min({_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, null, SelectTableInfoType.From, exp, true, null)})").FirstOrDefault();
 | 
					        protected TMember InternalMin<TMember>(Expression exp) => this.ToList<TMember>($"min({_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, null, SelectTableInfoType.From, exp, true, null)}) as1").FirstOrDefault();
 | 
				
			||||||
        protected TMember InternalSum<TMember>(Expression exp) => this.ToList<TMember>($"sum({_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, null, SelectTableInfoType.From, exp, true, null)})").FirstOrDefault();
 | 
					        protected TMember InternalSum<TMember>(Expression exp) => this.ToList<TMember>($"sum({_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, null, SelectTableInfoType.From, exp, true, null)}) as1").FirstOrDefault();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        protected ISelectGrouping<TKey, TValue> InternalGroupBy<TKey, TValue>(Expression columns)
 | 
					        protected ISelectGrouping<TKey, TValue> InternalGroupBy<TKey, TValue>(Expression columns)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
@@ -1104,10 +1104,10 @@ namespace FreeSql.Internal.CommonProvider
 | 
				
			|||||||
        async public Task<bool> AnyAsync()
 | 
					        async public Task<bool> AnyAsync()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            this.Limit(1);
 | 
					            this.Limit(1);
 | 
				
			||||||
            return (await this.ToListAsync<int>("1")).FirstOrDefault() == 1;
 | 
					            return (await this.ToListAsync<int>("1 as1")).FirstOrDefault() == 1;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        async public Task<long> CountAsync() => (await this.ToListAsync<int>("count(1)")).FirstOrDefault();
 | 
					        async public Task<long> CountAsync() => (await this.ToListAsync<int>("count(1) as1")).FirstOrDefault();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        async public Task<DataTable> ToDataTableAsync(string field = null)
 | 
					        async public Task<DataTable> ToDataTableAsync(string field = null)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
@@ -1284,10 +1284,10 @@ namespace FreeSql.Internal.CommonProvider
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
        protected Task<List<TReturn>> ToListMapReaderAsync<TReturn>((ReadAnonymousTypeInfo map, string field) af) => ToListMapReaderPrivateAsync<TReturn>(af, null);
 | 
					        protected Task<List<TReturn>> ToListMapReaderAsync<TReturn>((ReadAnonymousTypeInfo map, string field) af) => ToListMapReaderPrivateAsync<TReturn>(af, null);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        async protected Task<TMember> InternalAvgAsync<TMember>(Expression exp) => (await this.ToListAsync<TMember>($"avg({_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, null, SelectTableInfoType.From, exp, true, null)})")).FirstOrDefault();
 | 
					        async protected Task<TMember> InternalAvgAsync<TMember>(Expression exp) => (await this.ToListAsync<TMember>($"avg({_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, null, SelectTableInfoType.From, exp, true, null)}) as1")).FirstOrDefault();
 | 
				
			||||||
        async protected Task<TMember> InternalMaxAsync<TMember>(Expression exp) => (await this.ToListAsync<TMember>($"max({_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, null, SelectTableInfoType.From, exp, true, null)})")).FirstOrDefault();
 | 
					        async protected Task<TMember> InternalMaxAsync<TMember>(Expression exp) => (await this.ToListAsync<TMember>($"max({_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, null, SelectTableInfoType.From, exp, true, null)}) as1")).FirstOrDefault();
 | 
				
			||||||
        async protected Task<TMember> InternalMinAsync<TMember>(Expression exp) => (await this.ToListAsync<TMember>($"min({_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, null, SelectTableInfoType.From, exp, true, null)})")).FirstOrDefault();
 | 
					        async protected Task<TMember> InternalMinAsync<TMember>(Expression exp) => (await this.ToListAsync<TMember>($"min({_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, null, SelectTableInfoType.From, exp, true, null)}) as1")).FirstOrDefault();
 | 
				
			||||||
        async protected Task<TMember> InternalSumAsync<TMember>(Expression exp) => (await this.ToListAsync<TMember>($"sum({_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, null, SelectTableInfoType.From, exp, true, null)})")).FirstOrDefault();
 | 
					        async protected Task<TMember> InternalSumAsync<TMember>(Expression exp) => (await this.ToListAsync<TMember>($"sum({_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, null, SelectTableInfoType.From, exp, true, null)}) as1")).FirstOrDefault();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        protected Task<List<TReturn>> InternalToListAsync<TReturn>(Expression select) => this.ToListMapReaderAsync<TReturn>(this.GetExpressionField(select));
 | 
					        protected Task<List<TReturn>> InternalToListAsync<TReturn>(Expression select) => this.ToListMapReaderAsync<TReturn>(this.GetExpressionField(select));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user