From b8da23f9e7bb46c3ae912f3b905a83597e06b45a Mon Sep 17 00:00:00 2001 From: sunkaixuna <610262374@qq.com> Date: Wed, 5 Jan 2022 20:25:14 +0800 Subject: [PATCH] Optimize split table --- Src/Asp.Net/MySqlTest/Demo/DemoN_SplitTable.cs | 3 +++ Src/Asp.Net/PgSqlTest/Demo/DemoN_SplitTable.cs | 4 ++++ Src/Asp.Net/SqlServerTest/Demo/DemoN_SplitTable.cs | 5 ++++- .../QueryableProvider/QueryableProvider.cs | 14 +++++++++++--- 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/Src/Asp.Net/MySqlTest/Demo/DemoN_SplitTable.cs b/Src/Asp.Net/MySqlTest/Demo/DemoN_SplitTable.cs index 6100cabf2..5efb10fec 100644 --- a/Src/Asp.Net/MySqlTest/Demo/DemoN_SplitTable.cs +++ b/Src/Asp.Net/MySqlTest/Demo/DemoN_SplitTable.cs @@ -68,6 +68,9 @@ namespace OrmTest Console.WriteLine(); ////强制分表类型 var x4 = db.Insertable(new OrderSpliteTest() { Name = "A" ,Time=DateTime.Now.AddDays(-1) }).SplitTable().ExecuteCommand(); + + var tableName21 = db.SplitHelper().GetTableName(DateTime.Now.AddDays(-111)); + var listNull = db.Queryable().SplitTable(ta => ta.InTableNames(tableName21)).ToList(); Console.WriteLine("#### CodeFirst end ####"); } diff --git a/Src/Asp.Net/PgSqlTest/Demo/DemoN_SplitTable.cs b/Src/Asp.Net/PgSqlTest/Demo/DemoN_SplitTable.cs index 242f042c9..6f27cfad7 100644 --- a/Src/Asp.Net/PgSqlTest/Demo/DemoN_SplitTable.cs +++ b/Src/Asp.Net/PgSqlTest/Demo/DemoN_SplitTable.cs @@ -68,6 +68,10 @@ namespace OrmTest Console.WriteLine(); ////强制分表类型 var x4 = db.Insertable(new OrderSpliteTest() { Name = "A" ,Time=DateTime.Now.AddDays(-1) }).SplitTable().ExecuteCommand(); + + + var tableName21 = db.SplitHelper().GetTableName(DateTime.Now.AddDays(-111)); + var listNull = db.Queryable().SplitTable(ta => ta.InTableNames(tableName21)).ToList(); Console.WriteLine("#### CodeFirst end ####"); } diff --git a/Src/Asp.Net/SqlServerTest/Demo/DemoN_SplitTable.cs b/Src/Asp.Net/SqlServerTest/Demo/DemoN_SplitTable.cs index 6e9393ae0..05d9c356c 100644 --- a/Src/Asp.Net/SqlServerTest/Demo/DemoN_SplitTable.cs +++ b/Src/Asp.Net/SqlServerTest/Demo/DemoN_SplitTable.cs @@ -48,7 +48,10 @@ namespace OrmTest Console.WriteLine(); - var tableName = db.SplitHelper().GetTableName(DateTime.Now.AddDays(-1)); + var tableName = db.SplitHelper().GetTableName(DateTime.Now.AddDays(-111)); + + var listNull= db.Queryable().SplitTable(ta => ta.InTableNames(tableName)).ToList(); + var tableName2 = db.SplitHelper(new OrderSpliteTest() { Time=DateTime.Now}).GetTableNames(); var tableName3 = db.SplitHelper(new List { new OrderSpliteTest() { Time = DateTime.Now }, diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index 0b5f1eb85..1122deed8 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -931,11 +931,19 @@ namespace SqlSugar { tableQueryables.Add(this.Clone().AS(item.TableName)); } - Check.Exception(tableQueryables.Count == 0, ErrorMessage.GetThrowMessage("SplitTable error . There are no tables after filtering", "SplitTable没有筛选出分表,请检查条件和数据库中的表")); - var unionall = this.Context._UnionAll(tableQueryables.ToArray()); + if (tableQueryables.Count == 0) + { + var result= this.Context.SqlQueryable("-- No table ").Select(); + result.QueryBuilder.SelectValue = null; + return result; + } + else + { + var unionall = this.Context._UnionAll(tableQueryables.ToArray()); + return unionall; + } //var values= unionall.QueryBuilder.GetSelectValue; //unionall.QueryBuilder.SelectValue = values; - return unionall; } public ISugarQueryable Distinct() {