Skip to content

Commit ada3b5f

Browse files
committed
[#72]修复自动建表bug,并且添加单元测试发布x.3.1.55
1 parent 647c1d4 commit ada3b5f

File tree

96 files changed

+8289
-33
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

96 files changed

+8289
-33
lines changed

nuget-publish.bat

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
:start
22
::定义版本
3-
set EFCORE2=2.3.1.54
4-
set EFCORE3=3.3.1.54
5-
set EFCORE5=5.3.1.54
6-
set EFCORE6=6.3.1.54
3+
set EFCORE2=2.3.1.55
4+
set EFCORE3=3.3.1.55
5+
set EFCORE5=5.3.1.55
6+
set EFCORE6=6.3.1.55
77

88
::删除所有bin与obj下的文件
99
@echo off

src/ShardingCore/Bootstrapers/ShardingDbContextBootstrapper.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@ private void CreateDataTable(string dataSourceName, IVirtualTable virtualTable)
164164
{
165165
try
166166
{
167+
167168
//添加物理表
168169
virtualTable.AddPhysicTable(new DefaultPhysicTable(virtualTable, tail));
169170
_tableCreator.CreateTable(dataSourceName, entityMetadata.EntityType, tail);

src/ShardingCore/Sharding/ShardingDbContextExecutors/NoShardingFirstComparer.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@
33
using ShardingCore.Core.VirtualRoutes.TableRoutes.RouteTails;
44
using ShardingCore.Extensions;
55

6-
namespace ShardingCore.Sharding.ShardingDbContextExecutors
7-
{
86
/*
97
* @Author: xjm
108
* @Description:
119
* @Date: Sunday, 28 November 2021 21:47:38
1210
1311
*/
12+
namespace ShardingCore.Sharding.ShardingDbContextExecutors
13+
{
1414
public class NoShardingFirstComparer:IComparer<string>
1515
{
1616
private readonly string _defaultTail;

src/ShardingCore/VirtualRoutes/Days/AbstractSimpleShardingDayKeyDateTimeVirtualTableRoute.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
using System;
44
using System.Collections.Generic;
55
using System.Linq.Expressions;
6+
using ShardingCore.Core.PhysicTables;
7+
using ShardingCore.Core.VirtualTables;
68

79
namespace ShardingCore.VirtualRoutes.Days
810
{
@@ -20,7 +22,8 @@ public abstract class AbstractSimpleShardingDayKeyDateTimeVirtualTableRoute<TEnt
2022
/// <returns></returns>
2123
public abstract DateTime GetBeginTime();
2224
/// <summary>
23-
/// return all tails in database
25+
/// 这个方法会在程序启动的时候被调用,后续整个生命周期将不会被调用,仅用来告诉框架启动的时候有多少张TEntity对象的后缀表,
26+
/// 然后会在启动的时候添加到 <see cref="IVirtualTable{TEntity}.AddPhysicTable(IPhysicTable physicTable)"/>
2427
/// </summary>
2528
/// <returns></returns>
2629
public override List<string> GetAllTails()

test/ShardingCore.Test/ShardingTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ public async Task GenericTest()
164164
{
165165
dics.Add(tail, null);
166166
}
167-
Assert.Equal(",a,b", string.Join(",", dics.Keys));
167+
Assert.Equal($"{emptyTailIdentity},{aTailIdentity},{bTailIdentity}", string.Join(",", dics.Keys));
168168
}
169169
}
170170

test/ShardingCore.Test/Shardings/LogDayLongVirtualRoute.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Text;
55
using System.Threading.Tasks;
66
using ShardingCore.Core.EntityMetadatas;
7+
using ShardingCore.Helpers;
78
using ShardingCore.Test.Domain.Entities;
89
using ShardingCore.VirtualRoutes.Days;
910

@@ -27,5 +28,25 @@ public override DateTime GetBeginTime()
2728
{
2829
return new DateTime(2021, 1, 1);
2930
}
31+
32+
public override List<string> GetAllTails()
33+
{
34+
var beginTime = GetBeginTime().Date;
35+
36+
var tails = new List<string>();
37+
//提前创建表
38+
var nowTimeStamp = new DateTime(2021,11,20).Date;
39+
if (beginTime > nowTimeStamp)
40+
throw new ArgumentException("begin time error");
41+
var currentTimeStamp = beginTime;
42+
while (currentTimeStamp <= nowTimeStamp)
43+
{
44+
var currentTimeStampLong = ShardingCoreHelper.ConvertDateTimeToLong(currentTimeStamp);
45+
var tail = TimeFormatToTail(currentTimeStampLong);
46+
tails.Add(tail);
47+
currentTimeStamp = currentTimeStamp.AddDays(1);
48+
}
49+
return tails;
50+
}
3051
}
3152
}

test/ShardingCore.Test/Shardings/LogDayVirtualTableRoute.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Collections.Generic;
23
using ShardingCore.Core.EntityMetadatas;
34
using ShardingCore.Sharding.PaginationConfigurations;
45
using ShardingCore.Test.Domain.Entities;
@@ -32,5 +33,24 @@ public override bool AutoCreateTableByTime()
3233
{
3334
return true;
3435
}
36+
37+
public override List<string> GetAllTails()
38+
{
39+
var beginTime = GetBeginTime().Date;
40+
41+
var tails = new List<string>();
42+
//提前创建表
43+
var nowTimeStamp = new DateTime(2021,11,20).Date;
44+
if (beginTime > nowTimeStamp)
45+
throw new ArgumentException("begin time error");
46+
var currentTimeStamp = beginTime;
47+
while (currentTimeStamp <= nowTimeStamp)
48+
{
49+
var tail = ShardingKeyToTail(currentTimeStamp);
50+
tails.Add(tail);
51+
currentTimeStamp = currentTimeStamp.AddDays(1);
52+
}
53+
return tails;
54+
}
3555
}
3656
}

test/ShardingCore.Test/Startup.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,8 @@ public void ConfigureServices(IServiceCollection services, HostBuilderContext ho
3737
o.UseSqlServer(conn).UseLoggerFactory(efLogger))
3838
.Begin(o =>
3939
{
40-
#if DEBUG
4140
o.CreateShardingTableOnStart = true;
4241
o.EnsureCreatedWithOutShardingTable = true;
43-
44-
#endif
4542
o.AutoTrackEntity = true;
4643
})
4744
.AddShardingTransaction((connection, builder) =>

test/ShardingCore.Test2x/ShardingTest.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,15 @@
1010
using ShardingCore.Core.VirtualDatabase.VirtualDataSources;
1111
using ShardingCore.Core.VirtualDatabase.VirtualDataSources.PhysicDataSources;
1212
using ShardingCore.Core.VirtualDatabase.VirtualTables;
13+
using ShardingCore.Core.VirtualRoutes.TableRoutes.RouteTails;
1314
using ShardingCore.Exceptions;
1415
using ShardingCore.Extensions;
1516
using ShardingCore.Extensions.ShardingPageExtensions;
1617
using ShardingCore.Helpers;
1718
using ShardingCore.Sharding;
1819
using ShardingCore.Sharding.ReadWriteConfigurations.Abstractions;
1920
using ShardingCore.Sharding.ShardingComparision.Abstractions;
21+
using ShardingCore.Sharding.ShardingDbContextExecutors;
2022
using ShardingCore.TableCreator;
2123
using ShardingCore.Test2x.Domain.Entities;
2224
using Xunit;
@@ -150,6 +152,21 @@ public async Task GenericTest()
150152
var virtualTable = _virtualTableManager.GetVirtualTable<SysUserMod>();
151153
Assert.NotNull(virtualTable);
152154

155+
var emptyTailIdentity = new SingleQueryRouteTail(string.Empty).GetRouteTailIdentity();
156+
var aTailIdentity = new SingleQueryRouteTail("a").GetRouteTailIdentity();
157+
var bTailIdentity = new SingleQueryRouteTail("b").GetRouteTailIdentity();
158+
var dics = new SortedDictionary<string, string>(new NoShardingFirstComparer());
159+
var dicTails = new List<string>() { emptyTailIdentity, aTailIdentity, bTailIdentity };
160+
for (int i = 0; i < 10; i++)
161+
{
162+
dics.Clear();
163+
var reOrderList = dicTails.OrderBy(o => Guid.NewGuid()).ToList();
164+
foreach (var tail in reOrderList)
165+
{
166+
dics.Add(tail, null);
167+
}
168+
Assert.Equal($"{emptyTailIdentity},{aTailIdentity},{bTailIdentity}", string.Join(",", dics.Keys));
169+
}
153170
}
154171

155172
public class SequenceClass

test/ShardingCore.Test2x/Shardings/LogDayLongVirtualRoute.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
using System;
2+
using System.Collections.Generic;
23
using ShardingCore.Core.EntityMetadatas;
4+
using ShardingCore.Helpers;
35
using ShardingCore.Test2x.Domain.Entities;
46
using ShardingCore.VirtualRoutes.Days;
57

@@ -23,5 +25,24 @@ public override DateTime GetBeginTime()
2325
{
2426
return new DateTime(2021, 1, 1);
2527
}
28+
public override List<string> GetAllTails()
29+
{
30+
var beginTime = GetBeginTime().Date;
31+
32+
var tails = new List<string>();
33+
//提前创建表
34+
var nowTimeStamp = new DateTime(2021, 11, 20).Date;
35+
if (beginTime > nowTimeStamp)
36+
throw new ArgumentException("begin time error");
37+
var currentTimeStamp = beginTime;
38+
while (currentTimeStamp <= nowTimeStamp)
39+
{
40+
var currentTimeStampLong = ShardingCoreHelper.ConvertDateTimeToLong(currentTimeStamp);
41+
var tail = TimeFormatToTail(currentTimeStampLong);
42+
tails.Add(tail);
43+
currentTimeStamp = currentTimeStamp.AddDays(1);
44+
}
45+
return tails;
46+
}
2647
}
2748
}

0 commit comments

Comments
 (0)