private void CreateDateTable(IVirtualTable virtualTable)
        {
            var virtualTableShardingConfig = virtualTable.ShardingConfig;
            var beginTime              = virtualTableShardingConfig.BeginTableTimeStamp;
            var shardingModeEnum       = virtualTableShardingConfig.ShardingMode;
            Func <long, long> nextTime = shardingModeEnum switch
            {
                ShardingModeEnum.Day => x => x.ConvertLongToTime().Date.AddDays(1).ConvertTimeToLong(),
                ShardingModeEnum.Week => x => x.ConvertLongToTime().Date.AddDays(7).ConvertTimeToLong(),
                ShardingModeEnum.Month => x => x.ConvertLongToTime().Date.AddMonths(1).ConvertTimeToLong(),
                ShardingModeEnum.Year => x => x.ConvertLongToTime().Date.AddYears(1).ConvertTimeToLong(),
            };
            var nowTimeStamp = DateTime.Now.Date.ConvertTimeToLong();

            if (beginTime > nowTimeStamp)
            {
                throw new ArgumentException("起始时间不正确无法生成正确的表名");
            }
            var currentTimeStamp = beginTime;

            while (currentTimeStamp <= nowTimeStamp)
            {
                var tail = virtualTableShardingConfig.GetTableTailByField(currentTimeStamp);
                CreateTable(virtualTable, tail);
                //添加物理表
                virtualTable.AddPhysicTable(new DefaultPhysicTable(virtualTable.GetOriginalTableName(), tail, virtualTable.EntityType));
                currentTimeStamp = nextTime(currentTimeStamp);
            }
        }
        private void CreateDataTable(IVirtualTable virtualTable)
        {
            var shardingConfig = virtualTable.ShardingConfig;

            foreach (var tail in virtualTable.GetTaleAllTails())
            {
                if (NeedCreateTable(shardingConfig))
                {
                    try
                    {
                        _tableCreator.CreateTable(virtualTable.EntityType, tail);
                    }
                    catch (Exception)
                    {
                        _logger.LogWarning($"table :{virtualTable.GetOriginalTableName()}{shardingConfig.TailPrefix}{tail} will created");
                    }
                }

                //添加物理表
                virtualTable.AddPhysicTable(new DefaultPhysicTable(virtualTable, tail));
            }
        }