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 } } } }