Exemplo n.º 1
0
        public async Task <ShardingConfigAddOrChangeResponse> ShardingConfigAddOrChange(ShardingConfigAddOrChangeRequest request)
        {
            ShardingConfigAddOrChangeResponse response = new ShardingConfigAddOrChangeResponse();

            try
            {
                ShardingConfig shardingConfig = request.ShardingConfig.ToObject();
                if (shardingConfig.Id > 0)
                {
                    shardingConfig.UpdatedDate = Extensions.GetCurrentDateUtc();
                    await _shardingService.Change(shardingConfig);
                }
                else
                {
                    //var loginInfo =await _userService.GetLoginInfo(request.SessionId);
                    //shardingConfig.CreatedUid = loginInfo.Id;
                    shardingConfig.CreatedDate = Extensions.GetCurrentDateUtc();
                    await _shardingService.Add(shardingConfig);
                }
                response.SetSucess();
            }
            catch (Exception e)
            {
                response.SetFail(e);
                _logger.LogError(e, e.Message, request);
            }
            return(response);
        }
Exemplo n.º 2
0
 private static void InitSharding()
 {
     ShardingConfig.Init(config =>
     {
         config.AddAbsDb(DatabaseType.SQLite)
         .AddPhysicDb(ReadWriteType.Read | ReadWriteType.Write, "DataSource=db.db")
         .AddPhysicDbGroup()
         .AddPhysicTable <Base_UnitTest>("Base_UnitTest_0")
         .AddPhysicTable <Base_UnitTest>("Base_UnitTest_1")
         .AddPhysicTable <Base_UnitTest>("Base_UnitTest_2")
         .SetShardingRule(new Base_UnitTestShardingRule());
     });
 }
Exemplo n.º 3
0
        public async Task Change(ShardingConfig shardingConfig)
        {
            const string spName = ProcName.ShardingConfig_Change;

            await WithConnection(async p =>
            {
                DynamicParameters parameters = new DynamicParameters();
                parameters.Add("@Id", shardingConfig.Id, DbType.Int32);
                parameters.Add("@STATUS", shardingConfig.Status, DbType.Int32);
                parameters.Add("@HostName", shardingConfig.HostName, DbType.String);
                parameters.Add("@DatabaseName", shardingConfig.DatabaseName, DbType.String);
                parameters.Add("@Uid", shardingConfig.Uid, DbType.String);
                parameters.Add("@Pwd", shardingConfig.Pwd, DbType.String);
                parameters.Add("@UpdatedDate", shardingConfig.CreatedDate, DbType.DateTime);
                parameters.Add("@UpdatedUid", shardingConfig.CreatedUid ?? string.Empty, DbType.String);
                parameters.Add("@TYPE", shardingConfig.Type, DbType.Int32);
                parameters.Add("@ShardGroup", shardingConfig.ShardGroup, DbType.Int32);
                parameters.Add("@Config", shardingConfig.Config, DbType.String);
                return(await p.ExecuteAsync(spName, parameters, commandType: CommandType.StoredProcedure));
            });
        }
Exemplo n.º 4
0
        static void Main(string[] args)
        {
            ShardingConfig.Init(config =>
            {
                config.AddAbsDb(DatabaseType.SqlServer)
                .AddPhysicDb(ReadWriteType.Read | ReadWriteType.Write, Config.CONSTRING1)
                .AddPhysicDbGroup()
                .SetHashModShardingRule <Base_UnitTest>(nameof(Base_UnitTest.Id), 3);
            });

            DateTime time1 = DateTime.Now;
            DateTime time2 = DateTime.Now;

            var       db    = DbFactory.GetDbAccessor(Config.CONSTRING1, DatabaseType.SqlServer);
            Stopwatch watch = new Stopwatch();

            var q = db.GetIQueryable <Base_UnitTest>()
                    .Where(x => x.UserName.Contains("00001C22-8DD2-4D47-B500-407554B099AB"))
                    .OrderByDescending(x => x.Id)
                    .Skip(0)
                    .Take(30);

            q.ToList();
            q.ToSharding().ToList();
            watch.Restart();
            var list1 = q.ToList();

            watch.Stop();
            Console.WriteLine($"未分表耗时:{watch.ElapsedMilliseconds}ms");
            watch.Restart();
            var list2 = q.ToSharding().ToList();

            watch.Stop();
            Console.WriteLine($"分表后耗时:{watch.ElapsedMilliseconds}ms");

            Console.WriteLine("完成");

            Console.ReadLine();
        }
Exemplo n.º 5
0
        static void Main(string[] args)
        {
            ShardingConfig.Init(config =>
            {
                config.AddAbsDb(DatabaseType.SqlServer)
                .AddPhysicDb(ReadWriteType.Read | ReadWriteType.Write, Config.ConString1)
                .AddPhysicDbGroup()
                .AddPhysicTable <Base_UnitTest>("Base_UnitTest_0")
                .AddPhysicTable <Base_UnitTest>("Base_UnitTest_1")
                .AddPhysicTable <Base_UnitTest>("Base_UnitTest_2")
                .SetShardingRule(new Base_UnitTestShardingRule());
            });

            var       db    = DbFactory.GetRepository(Config.ConString1, DatabaseType.SqlServer);
            Stopwatch watch = new Stopwatch();
            var       q     = db.GetIQueryable <Base_UnitTest>()
                              .Where(x => x.UserName.Contains("00001C22-8DD2-4D47-B500-407554B099AB"))
                              .OrderByDescending(x => x.Id)
                              .Skip(0)
                              .Take(30);

            q.ToList();
            q.ToSharding().ToList();
            watch.Restart();
            var list1 = q.ToList();

            watch.Stop();
            Console.WriteLine($"未分表耗时:{watch.ElapsedMilliseconds}ms");
            watch.Restart();
            var list2 = q.ToSharding().ToList();

            watch.Stop();
            Console.WriteLine($"分表后耗时:{watch.ElapsedMilliseconds}ms");

            Console.WriteLine("完成");

            Console.ReadLine();
        }
Exemplo n.º 6
0
 public async Task Change(ShardingConfig shardingConfig)
 {
     await _shardingConfigDao.Change(shardingConfig);
 }
Exemplo n.º 7
0
 public async Task Add(ShardingConfig shardingConfig)
 {
     await _shardingConfigDao.Add(shardingConfig);
 }