public static void Init() { Console.WriteLine(""); Console.WriteLine("#### DemoN_SplitTable Start ####"); SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { DbType = DbType.PostgreSQL, ConnectionString = Config.ConnectionString, InitKeyType = InitKeyType.Attribute, IsAutoCloseConnection = true }); db.Aop.OnLogExecuted = (s, p) => { Console.WriteLine(s); }; //初始化分表 db.CodeFirst.SplitTables().InitTables <OrderSpliteTest>(); Console.WriteLine(); //根据最近3个表进行查询 var list = db.Queryable <OrderSpliteTest>().Where(it => it.Pk == Guid.NewGuid()) .SplitTable(tabs => tabs.Take(3)) .Where(it => it.Time == DateTime.Now).ToOffsetPage(1, 2); Console.WriteLine(); //根据时间选出的表进行查询 var list2 = db.Queryable <OrderSpliteTest>().SplitTable(tabs => tabs.Where(it => it.Date >= DateTime.Now.AddYears(-2))).ToList(); Console.WriteLine(); //删除数据只在最近3张表执行操作 var x = db.Deleteable <OrderSpliteTest>().Where(it => it.Pk == Guid.NewGuid()).SplitTable(tabs => tabs.Take(3)).ExecuteCommand(); Console.WriteLine(); var tableName = db.SplitHelper <OrderSpliteTest>().GetTableName(DateTime.Now.AddDays(-1)); var tableName2 = db.SplitHelper(new OrderSpliteTest() { Time = DateTime.Now }).GetTableNames(); var tableName3 = db.SplitHelper(new List <OrderSpliteTest> { new OrderSpliteTest() { Time = DateTime.Now }, new OrderSpliteTest() { Time = DateTime.Now }, new OrderSpliteTest() { Time = DateTime.Now.AddMonths(-10) } }).GetTableNames(); var x2 = db.Updateable <OrderSpliteTest>() .SetColumns(it => it.Name == "a") .Where(it => it.Pk == Guid.NewGuid()) .SplitTable(tabs => tabs.InTableNames(tableName2)) .ExecuteCommand(); Console.WriteLine(); //按日分表 var x3 = db.Insertable(new OrderSpliteTest() { Name = "A" }).SplitTable().ExecuteCommand(); Console.WriteLine(); ////强制分表类型 var x4 = db.Insertable(new OrderSpliteTest() { Name = "A", Time = DateTime.Now.AddDays(-1) }).SplitTable().ExecuteCommand(); Console.WriteLine("#### CodeFirst end ####"); }
public static void Init() { Console.WriteLine(""); Console.WriteLine("#### CodeFirst Start ####"); SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { DbType = DbType.SqlServer, ConnectionString = Config.ConnectionString, InitKeyType = InitKeyType.Attribute, IsAutoCloseConnection = true }); db.Aop.OnLogExecuted = (s, p) => { Console.WriteLine(s); Console.WriteLine(string.Join(",", p?.Select(it => it.ParameterName + ":" + it.Value))); }; //初始化分表 db.CodeFirst.SplitTables().InitTables <OrderSpliteTest>(); Console.WriteLine(); //根据最近3个表进行查询 var list = db.Queryable <OrderSpliteTest>() .SplitTable(DateTime.Now.Date.AddYears(-1), DateTime.Now) .ToList(); Console.WriteLine(); //根据时间选出的表进行查询 var list2 = db.Queryable <OrderSpliteTest>().SplitTable(tabs => tabs.Where(it => it.Date >= DateTime.Now.AddYears(-2))).ToList(); Console.WriteLine(); //删除数据只在最近3张表执行操作 var x = db.Deleteable <OrderSpliteTest>().Where(it => it.Pk == Guid.NewGuid()).SplitTable(tabs => tabs.Take(3)).ExecuteCommand(); Console.WriteLine(); var tableName = db.SplitHelper <OrderSpliteTest>().GetTableName(DateTime.Now.AddDays(-111)); var listNull = db.Queryable <OrderSpliteTest>().SplitTable(ta => ta.InTableNames(tableName)).ToList(); var tableName2 = db.SplitHelper(new OrderSpliteTest() { Time = DateTime.Now }).GetTableNames(); var tableName3 = db.SplitHelper(new List <OrderSpliteTest> { new OrderSpliteTest() { Time = DateTime.Now }, new OrderSpliteTest() { Time = DateTime.Now }, new OrderSpliteTest() { Time = DateTime.Now.AddMonths(-10) } }).GetTableNames(); var x2 = db.Updateable <OrderSpliteTest>() .SetColumns(it => it.Name == "a") .Where(it => it.Pk == Guid.NewGuid()) .SplitTable(tabs => tabs.InTableNames(tableName2)) .ExecuteCommand(); Console.WriteLine(); //按日分表 var x3 = db.Insertable(new OrderSpliteTest() { Name = "A" }).SplitTable().ExecuteCommand(); Console.WriteLine(); ////强制分表类型 var x4 = db.Insertable(new OrderSpliteTest() { Name = "A", Time = DateTime.Now.AddDays(-1) }).SplitTable().ExecuteCommand(); //分表支持BulkCopy db.Fastest <OrderSpliteTest>().SplitTable().BulkCopy(new List <OrderSpliteTest> { new OrderSpliteTest() { Pk = Guid.NewGuid(), Name = "a", Time = DateTime.Now }, new OrderSpliteTest() { Pk = Guid.NewGuid(), Name = "a", Time = DateTime.Now }, new OrderSpliteTest() { Pk = Guid.NewGuid(), Name = "a", Time = DateTime.Now.AddMonths(-10) } }); db.Fastest <OrderSpliteTest>().SplitTable().BulkUpdate(db.Queryable <OrderSpliteTest>().SplitTable(it => it).ToList()); db.Fastest <OrderSpliteTest>().SplitTable().BulkUpdate(db.Queryable <OrderSpliteTest>().SplitTable(it => it).ToList(), new string[] { "pk" }, new string[] { "name" }); Console.WriteLine("#### CodeFirst end ####"); }