修复long类型时间的定时分表bug

This commit is contained in:
xuejiaming 2022-04-01 15:58:12 +08:00
parent f01cf48003
commit 138ef9c137
6 changed files with 25 additions and 7 deletions

View File

@ -1,9 +1,9 @@
:start
::定义版本
set EFCORE2=2.4.2.05
set EFCORE3=3.4.2.05
set EFCORE5=5.4.2.05
set EFCORE6=6.4.2.05
set EFCORE2=2.4.2.06
set EFCORE3=3.4.2.06
set EFCORE5=5.4.2.06
set EFCORE6=6.4.2.06
::删除所有bin与obj下的文件
@echo off

View File

@ -8,6 +8,7 @@ using Microsoft.EntityFrameworkCore;
using Sample.SqlServer3x.Domain.Entities;
using ShardingCore.Core.PhysicTables;
using ShardingCore.Core.VirtualDatabase.VirtualTables;
using ShardingCore.Extensions;
using ShardingCore.TableCreator;
namespace Sample.SqlServer3x.Controllers
@ -39,7 +40,6 @@ namespace Sample.SqlServer3x.Controllers
{
Console.WriteLine("---------------开始-----------------");
var s = DateTime.Now.ToString("HHmmss");
Task.Run(() =>
{
try

View File

@ -265,7 +265,7 @@ namespace ShardingCore.Extensions
{
var physicTables = virtualTableManager.GetVirtualTable(entityType).RouteTo(new ShardingTableRouteConfig(predicate: @where));
if (physicTables.IsEmpty())
throw new ShardingCoreException($"{where.ShardingPrint()} cant found ant physic table");
throw new ShardingCoreException($"{where.ShardingPrint()} cant found any physic table");
var dbs = physicTables.Select(o => shardingDbContext.GetDbContext(dataSourceName, false, routeTailFactory.Create(o.Tail))).ToList();
foreach (var dbContext in dbs)

View File

@ -54,6 +54,13 @@ namespace ShardingCore.VirtualRoutes.Abstractions
/// </summary>
/// <returns></returns>
public abstract string[] GetCronExpressions();
/// <summary>
/// 当前时间转成
/// </summary>
/// <param name="now"></param>
/// <returns></returns>
protected abstract string ConvertNowToTail(DateTime now);
public virtual Task ExecuteAsync()
{
var virtualTableManager = (IVirtualTableManager)ShardingContainer.GetService(typeof(IVirtualTableManager<>).GetGenericType0(EntityMetadata.ShardingDbContextType));
@ -69,7 +76,7 @@ namespace ShardingCore.VirtualRoutes.Abstractions
var virtualDataSourceManager = (IVirtualDataSourceManager)ShardingContainer.GetService(typeof(IVirtualDataSourceManager<>).GetGenericType0(EntityMetadata.ShardingDbContextType));
var allVirtualDataSources = virtualDataSourceManager.GetAllVirtualDataSources();
var now = DateTime.Now.AddMinutes(IncrementMinutes);
var tail = virtualTable.GetVirtualRoute().ShardingKeyToTail(now);
var tail = ConvertNowToTail(now);
virtualTableManager.AddPhysicTable(virtualTable, new DefaultPhysicTable(virtualTable, tail));
foreach (var virtualDataSource in allVirtualDataSources)
{

View File

@ -32,5 +32,9 @@ namespace ShardingCore.VirtualRoutes.Abstractions
/// <returns></returns>
protected abstract string TimeFormatToTail(DateTime time);
protected override string ConvertNowToTail(DateTime now)
{
return ShardingKeyToTail(now);
}
}
}

View File

@ -1,3 +1,6 @@
using System;
using ShardingCore.Helpers;
namespace ShardingCore.VirtualRoutes.Abstractions
{
/*
@ -29,5 +32,9 @@ namespace ShardingCore.VirtualRoutes.Abstractions
/// <returns></returns>
protected abstract string TimeFormatToTail(long time);
protected override string ConvertNowToTail(DateTime now)
{
return ShardingKeyToTail(ShardingCoreHelper.ConvertDateTimeToLong(now));
}
}
}