diff --git a/src/ShardingCore/Helpers/MigrationHelper.cs b/src/ShardingCore/Helpers/MigrationHelper.cs
index 38213f78..437780cd 100644
--- a/src/ShardingCore/Helpers/MigrationHelper.cs
+++ b/src/ShardingCore/Helpers/MigrationHelper.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Reflection;
using System.Text;
@@ -25,6 +26,7 @@ namespace ShardingCore.Helpers
///
/// https://github.com/Coldairarrow/EFCore.Sharding/blob/master/src/EFCore.Sharding/Migrations/MigrationHelper.cs
///
+ [ExcludeFromCodeCoverage]
public class MigrationHelper
{
private MigrationHelper() { }
diff --git a/test/ShardingCore.Test/Domain/Entities/SysUserModInt.cs b/test/ShardingCore.Test/Domain/Entities/SysUserModInt.cs
new file mode 100644
index 00000000..a77b9d4c
--- /dev/null
+++ b/test/ShardingCore.Test/Domain/Entities/SysUserModInt.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ShardingCore.Test.Domain.Entities
+{
+ public class SysUserModInt
+ {
+ ///
+ /// 用户Id用于分表
+ ///
+ public int Id { get; set; }
+ ///
+ /// 用户名称
+ ///
+ public string Name { get; set; }
+ ///
+ /// 用户姓名
+ ///
+ public int Age { get; set; }
+ public int AgeGroup { get; set; }
+ }
+}
diff --git a/test/ShardingCore.Test/Domain/Maps/SysUserModIntMap.cs b/test/ShardingCore.Test/Domain/Maps/SysUserModIntMap.cs
new file mode 100644
index 00000000..79da8daf
--- /dev/null
+++ b/test/ShardingCore.Test/Domain/Maps/SysUserModIntMap.cs
@@ -0,0 +1,23 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using ShardingCore.Test.Domain.Entities;
+
+namespace ShardingCore.Test.Domain.Maps
+{
+ public class SysUserModIntMap:IEntityTypeConfiguration
+ {
+ public void Configure(EntityTypeBuilder builder)
+ {
+
+ builder.HasKey(o => o.Id);
+ builder.Property(o => o.Id).ValueGeneratedNever();
+ builder.Property(o => o.Name).HasMaxLength(128);
+ builder.ToTable(nameof(SysUserModInt));
+ }
+ }
+}
diff --git a/test/ShardingCore.Test/ShardingDefaultDbContext.cs b/test/ShardingCore.Test/ShardingDefaultDbContext.cs
index 90ba3e99..16a267aa 100644
--- a/test/ShardingCore.Test/ShardingDefaultDbContext.cs
+++ b/test/ShardingCore.Test/ShardingDefaultDbContext.cs
@@ -32,6 +32,7 @@ namespace ShardingCore.Test
modelBuilder.ApplyConfiguration(new LogNoShardingMap());
modelBuilder.ApplyConfiguration(new LogMonthLongMap());
modelBuilder.ApplyConfiguration(new LogYearLongMap());
+ modelBuilder.ApplyConfiguration(new SysUserModIntMap());
}
public IRouteTail RouteTail { get; set; }
diff --git a/test/ShardingCore.Test/ShardingTest.cs b/test/ShardingCore.Test/ShardingTest.cs
index c01142c6..94089dbe 100644
--- a/test/ShardingCore.Test/ShardingTest.cs
+++ b/test/ShardingCore.Test/ShardingTest.cs
@@ -1270,6 +1270,73 @@ namespace ShardingCore.Test
await _virtualDbContext.SaveChangesAsync();
}
+
+
+
+ [Fact]
+ public async Task Int_ToList_All_Route_Test()
+ {
+ using (_shardingRouteManager.CreateScope())
+ {
+ _shardingRouteManager.Current.TryCreateOrAddMustTail("00");
+
+ var mod00s = await _virtualDbContext.Set().ToListAsync();
+ Assert.Equal(333, mod00s.Count);
+ }
+ var mods = await _virtualDbContext.Set().ToListAsync();
+ Assert.Equal(1000, mods.Count);
+
+ var modOrders1 = await _virtualDbContext.Set().OrderBy(o => o.Age).ToListAsync();
+ int ascAge = 1;
+ foreach (var sysUserMod in modOrders1)
+ {
+ Assert.Equal(ascAge, sysUserMod.Age);
+ ascAge++;
+ }
+
+
+ var modOrders2 = await _virtualDbContext.Set().OrderByDescending(o => o.Age).ToListAsync();
+ int descAge = 1000;
+ foreach (var sysUserMod in modOrders2)
+ {
+ Assert.Equal(descAge, sysUserMod.Age);
+ descAge--;
+ }
+ }
+ [Fact]
+ public async Task Int_ToList_All_Test()
+ {
+
+ var mods = await _virtualDbContext.Set().ToListAsync();
+ Assert.Equal(1000, mods.Count);
+
+ var modOrders1 = await _virtualDbContext.Set().OrderBy(o => o.Age).ToListAsync();
+ int ascAge = 1;
+ foreach (var sysUserMod in modOrders1)
+ {
+ Assert.Equal(ascAge, sysUserMod.Age);
+ ascAge++;
+ }
+
+ var modOrders2 = await _virtualDbContext.Set().OrderByDescending(o => o.Age).ToListAsync();
+ int descAge = 1000;
+ foreach (var sysUserMod in modOrders2)
+ {
+ Assert.Equal(descAge, sysUserMod.Age);
+ descAge--;
+ }
+
+
+
+ var pageResult = await _virtualDbContext.Set().Skip(10).Take(10).OrderByDescending(o => o.Age).ToListAsync();
+ Assert.Equal(10, pageResult.Count);
+ int pageDescAge = 990;
+ foreach (var sysUserMod in pageResult)
+ {
+ Assert.Equal(pageDescAge, sysUserMod.Age);
+ pageDescAge--;
+ }
+ }
// [Fact]
// public async Task Group_API_Test()
// {
diff --git a/test/ShardingCore.Test/ShardingTestSync.cs b/test/ShardingCore.Test/ShardingTestSync.cs
index dfd0f886..13cf7a11 100644
--- a/test/ShardingCore.Test/ShardingTestSync.cs
+++ b/test/ShardingCore.Test/ShardingTestSync.cs
@@ -1217,6 +1217,72 @@ namespace ShardingCore.Test
}
}
}
+
+
+ [Fact]
+ public void Int_ToList_All_Route_Test()
+ {
+ using (_shardingRouteManager.CreateScope())
+ {
+ _shardingRouteManager.Current.TryCreateOrAddMustTail("00");
+
+ var mod00s = _virtualDbContext.Set().ToList();
+ Assert.Equal(333, mod00s.Count);
+ }
+ var mods = _virtualDbContext.Set().ToList();
+ Assert.Equal(1000, mods.Count);
+
+ var modOrders1 = _virtualDbContext.Set().OrderBy(o => o.Age).ToList();
+ int ascAge = 1;
+ foreach (var sysUserMod in modOrders1)
+ {
+ Assert.Equal(ascAge, sysUserMod.Age);
+ ascAge++;
+ }
+
+
+ var modOrders2 = _virtualDbContext.Set().OrderByDescending(o => o.Age).ToList();
+ int descAge = 1000;
+ foreach (var sysUserMod in modOrders2)
+ {
+ Assert.Equal(descAge, sysUserMod.Age);
+ descAge--;
+ }
+ }
+ [Fact]
+ public void Int_ToList_All_Test()
+ {
+
+ var mods = _virtualDbContext.Set().ToList();
+ Assert.Equal(1000, mods.Count);
+
+ var modOrders1 = _virtualDbContext.Set().OrderBy(o => o.Age).ToList();
+ int ascAge = 1;
+ foreach (var sysUserMod in modOrders1)
+ {
+ Assert.Equal(ascAge, sysUserMod.Age);
+ ascAge++;
+ }
+
+ var modOrders2 = _virtualDbContext.Set().OrderByDescending(o => o.Age).ToList();
+ int descAge = 1000;
+ foreach (var sysUserMod in modOrders2)
+ {
+ Assert.Equal(descAge, sysUserMod.Age);
+ descAge--;
+ }
+
+
+
+ var pageResult = _virtualDbContext.Set().Skip(10).Take(10).OrderByDescending(o => o.Age).ToList();
+ Assert.Equal(10, pageResult.Count);
+ int pageDescAge = 990;
+ foreach (var sysUserMod in pageResult)
+ {
+ Assert.Equal(pageDescAge, sysUserMod.Age);
+ pageDescAge--;
+ }
+ }
// [Fact]
// public void Group_API_Test()
// {
diff --git a/test/ShardingCore.Test/Shardings/SysUserModIntVirtualRoute.cs b/test/ShardingCore.Test/Shardings/SysUserModIntVirtualRoute.cs
new file mode 100644
index 00000000..5cdb0fc5
--- /dev/null
+++ b/test/ShardingCore.Test/Shardings/SysUserModIntVirtualRoute.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ShardingCore.Core.EntityMetadatas;
+using ShardingCore.Test.Domain.Entities;
+using ShardingCore.VirtualRoutes.Mods;
+
+namespace ShardingCore.Test.Shardings
+{
+ public class SysUserModIntVirtualRoute:AbstractSimpleShardingModKeyIntVirtualTableRoute
+ {
+ protected override bool EnableHintRoute => true;
+
+ public SysUserModIntVirtualRoute() : base(2, 3)
+ {
+ }
+
+ public override void Configure(EntityMetadataTableBuilder builder)
+ {
+ builder.ShardingProperty(o => o.Id);
+ }
+ }
+}
diff --git a/test/ShardingCore.Test/Startup.cs b/test/ShardingCore.Test/Startup.cs
index adb2ae30..735b14ca 100644
--- a/test/ShardingCore.Test/Startup.cs
+++ b/test/ShardingCore.Test/Startup.cs
@@ -70,6 +70,7 @@ namespace ShardingCore.Test
op.AddShardingTableRoute();
op.AddShardingTableRoute();
op.AddShardingTableRoute();
+ op.AddShardingTableRoute();
}).AddReadWriteSeparation(sp =>
{
return new Dictionary>()
@@ -117,6 +118,7 @@ namespace ShardingCore.Test
{
var ids = Enumerable.Range(1, 1000);
var userMods = new List();
+ var userModInts = new List();
var userSalaries = new List();
var beginTime = new DateTime(2020, 1, 1);
var endTime = new DateTime(2021, 12, 1);
@@ -129,6 +131,13 @@ namespace ShardingCore.Test
Name = $"name_{id}",
AgeGroup = Math.Abs(id % 10)
});
+ userModInts.Add(new SysUserModInt()
+ {
+ Id = id,
+ Age = id,
+ Name = $"name_{id}",
+ AgeGroup = Math.Abs(id % 10)
+ });
var tempTime = beginTime;
var i = 0;
while (tempTime <= endTime)
@@ -252,6 +261,7 @@ namespace ShardingCore.Test
using (var tran = virtualDbContext.Database.BeginTransaction())
{
await virtualDbContext.AddRangeAsync(userMods);
+ await virtualDbContext.AddRangeAsync(userModInts);
await virtualDbContext.AddRangeAsync(userSalaries);
await virtualDbContext.AddRangeAsync(orders);
await virtualDbContext.AddRangeAsync(logDays);
diff --git a/test/ShardingCore.Test2x/ShardingTestSync.cs b/test/ShardingCore.Test2x/ShardingTestSync.cs
index 650cf872..693c2eaf 100644
--- a/test/ShardingCore.Test2x/ShardingTestSync.cs
+++ b/test/ShardingCore.Test2x/ShardingTestSync.cs
@@ -1009,6 +1009,9 @@ namespace ShardingCore.Test2x
Assert.Equal(10, page1.Data.Count);
Assert.Equal(31, page1.Total);
}
+
+
+
// [Fact]
// public void Group_API_Test()
// {