示例#1
0
        public static void 测试_导数据()
        {
            //本地库数据初始化 插入10万条用户数据
            int insertCount = 100000;

            Console.WriteLine("开始测试_导数据,本地库插入{0}条用户数据", insertCount);
            Console.WriteLine("开始生成数据");
            List <tb_user> userlist = new List <tb_user>();

            for (int i = 200; i < insertCount + 200; i++)
            {
                userlist.Add(
                    new tb_user
                {
                    自增NO = i, //自增列 框架不会去插入
                    账号   = string.Format("U{0:D4}", i),
                    密码   = "12345678",
                    用户名  = string.Format("Tester{0:D3}", i),
                    性别   = i % 2 == 0,
                    年龄   = RNG.Next(20, 60),
                    会员等级 = (byte)(RNG.Next(1, 255)),
                    积分   = RNG.Next(1000, 10000),
                    消费能力 = Math.Abs((short)RNG.Next(1, 100)),
                    头像   = 获取头像(i),
                    注册日期 = DateTime.Now
                });
            }
            Console.WriteLine("完成生成数据,开始执行插入本地库");
            long ms = localDy.BulkInsert(userlist);

            Console.WriteLine("插入本地库{1}条数据执行:{0}毫秒", ms, insertCount);
            Console.WriteLine();


            //单表->导入远程服务器
            Console.WriteLine("开始执行导入远程服务器");
            var remoteDy = new Dy("remoteServer");
            var query1   = new DyQuery <tb_user>().AsQuery();
            var result   = localDy.CopyToRemote <kQL.orm.demo.remotemodels.tb_user>(query1, remoteDy);

            Console.WriteLine("完成导入远程服务器,本次执行毫秒:{0}", result.Item1);
            Console.WriteLine();

            //聚合结果导入远程服务器
            var query2 = new DyQuery <tb_order>(t2 => t2)
                         .Join <tb_order_detail>(JoinWay.InnerJoin, t3 => t3).On <tb_order, tb_order_detail>((t2, t3) => t2.订单ID == t3.订单ID)
                         .Group(t2 => t2.订单ID).Group(t2 => t2.账号)
                         .Having <tb_order_detail>(WhereWay.And, t3 => t3.订单ID.Dy_Count() > 5)
                         .Select <tb_order, tb_order_detail>(
                (t2, t3) => new
            {
                t2.订单ID,
                t2.账号,
                明细数量   = t3.订单ID.Dy_Count(),
                总金额Max = t3.支付价.Dy_Max(),
                总金额Min = t3.支付价.Dy_Min(),
                总金额Sum = t3.支付价.Dy_Sum(),
                总金额Avg = t3.支付价.Dy_Avg(),
                R金额    = ((t3.支付价.Dy_Max() + t3.支付价.Dy_Min() - t3.支付价.Dy_Sum() * t3.支付价.Dy_Avg()) / t3.支付价.Dy_Min()).Dy_Convert <decimal, decimal>("decimal(18,2)")
            }
                ).AsQuery();

            result = localDy.CopyToRemote <kQL.orm.demo.remotemodels.tb_order_info>(query2, remoteDy);
            Console.WriteLine("聚合结果导入远程服务器->本次执行毫秒:{0}", result.Item1);
        }