public ShardingBootstrapper(IServiceProvider serviceProvider, IVirtualTableManager virtualTableManager
                             , IShardingTableCreator tableCreator, ILogger <ShardingBootstrapper> logger,
                             IShardingDbContextFactory shardingDbContextFactory, ShardingCoreConfig shardingCoreConfig)
 {
     ShardingContainer.SetServices(serviceProvider);
     _serviceProvider     = serviceProvider;
     _virtualTableManager = virtualTableManager;
     _tableCreator        = tableCreator;
     _logger = logger;
     _shardingDbContextFactory = shardingDbContextFactory;
     _shardingCoreConfig       = shardingCoreConfig;
 }
        public void AutoCreateTable(IVirtualTableManager virtualTableManager, IShardingTableCreator tableCreator)
        {
            var allVirtualTables = virtualTableManager.GetAllVirtualTables();

            foreach (var virtualTable in allVirtualTables)
            {
                if (virtualTable.EntityType == typeof(SysUserLogByDay))
                {
                    var now  = DateTime.Now.Date.AddDays(1);
                    var tail = virtualTable.GetVirtualRoute().ShardingKeyToTail(now);
                    try
                    {
                        tableCreator.CreateTable <SysUserLogByDay>(tail);
                        virtualTableManager.AddPhysicTable(virtualTable, new DefaultPhysicTable(virtualTable, tail));
                    }
                    catch (Exception e)
                    {
                        //ignore
                    }
                }
            }
        }