Exemplo n.º 1
0
        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 ####");
        }
Exemplo n.º 2
0
        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 ####");
        }