Skip to content

Commit 646b01b

Browse files
committed
移除useMemorySkip的参数系统采用自行处理并且发布x.3.1.71
1 parent f18872c commit 646b01b

File tree

16 files changed

+103
-39
lines changed

16 files changed

+103
-39
lines changed

Logo/logo.png

18.3 KB
Loading

ShardingCore.sln

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "benchmarks", "benchmarks",
5555
EndProject
5656
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ShardingCoreBenchmark", "benchmarks\ShardingCoreBenchmark\ShardingCoreBenchmark.csproj", "{8CE5E8AF-DDB7-4989-8AA4-1D47E4226846}"
5757
EndProject
58-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ShardingCoreBenchmark5x", "benchmarks\ShardingCoreBenchmark5x\ShardingCoreBenchmark5x.csproj", "{ED191305-AB19-4863-A48A-7BA4C21F467B}"
58+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ShardingCoreBenchmark5x", "benchmarks\ShardingCoreBenchmark5x\ShardingCoreBenchmark5x.csproj", "{ED191305-AB19-4863-A48A-7BA4C21F467B}"
5959
EndProject
6060
Global
6161
GlobalSection(SolutionConfigurationPlatforms) = preSolution

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.68
4-
set EFCORE3=3.3.1.68
5-
set EFCORE5=5.3.1.68
6-
set EFCORE6=6.3.1.68
3+
set EFCORE2=2.3.1.71
4+
set EFCORE3=3.3.1.71
5+
set EFCORE5=5.3.1.71
6+
set EFCORE6=6.3.1.71
77

88
::删除所有bin与obj下的文件
99
@echo off
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Threading.Tasks;
5+
using Microsoft.EntityFrameworkCore;
6+
using Sample.SqlServer.Domain.Maps;
7+
using ShardingCore.Core.VirtualRoutes.TableRoutes.RouteTails.Abstractions;
8+
using ShardingCore.Sharding;
9+
using ShardingCore.Sharding.Abstractions;
10+
11+
namespace Sample.SqlServer.DbContexts
12+
{
13+
public class DefaultShardingDbContext1:AbstractShardingDbContext, IShardingTableDbContext
14+
{
15+
public DefaultShardingDbContext1(DbContextOptions<DefaultShardingDbContext1> options) : base(options)
16+
{
17+
}
18+
19+
protected override void OnModelCreating(ModelBuilder modelBuilder)
20+
{
21+
base.OnModelCreating(modelBuilder);
22+
}
23+
24+
public IRouteTail RouteTail { get; set; }
25+
}
26+
}

samples/Sample.SqlServer/Shardings/SysUserModVirtualTableRoute.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ public override IPaginationConfiguration<SysUserMod> CreatePaginationConfigurati
4343

4444
public override void Configure(EntityMetadataTableBuilder<SysUserMod> builder)
4545
{
46-
4746
}
4847
}
4948
}

samples/Sample.SqlServer/Startup.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
using ShardingCore.Sharding.ReadWriteConfigurations;
1111
using System;
1212
using System.Collections.Generic;
13+
using ShardingCore.Core;
1314

1415
namespace Sample.SqlServer
1516
{
@@ -34,6 +35,8 @@ public void ConfigureServices(IServiceCollection services)
3435
o.CreateShardingTableOnStart = true;
3536
o.EnsureCreatedWithOutShardingTable = true;
3637
o.AutoTrackEntity = true;
38+
o.MaxQueryConnectionsLimit = Environment.ProcessorCount;
39+
o.ConnectionMode = ConnectionModeEnum.SYSTEM_AUTO;
3740
//if SysTest entity not exists in db and db is exists
3841
//o.AddEntityTryCreateTable<SysTest>(); // or `o.AddEntitiesTryCreateTable(typeof(SysTest));`
3942
})
@@ -48,6 +51,27 @@ public void ConfigureServices(IServiceCollection services)
4851
o.AddShardingTableRoute<SysUserSalaryVirtualTableRoute>();
4952
o.AddShardingTableRoute<TestYearShardingVirtualTableRoute>();
5053
}).End();
54+
services.AddShardingDbContext<DefaultShardingDbContext1>(
55+
(conn, o) =>
56+
o.UseSqlServer(conn).UseLoggerFactory(efLogger)
57+
).Begin(o =>
58+
{
59+
o.CreateShardingTableOnStart = true;
60+
o.EnsureCreatedWithOutShardingTable = true;
61+
o.AutoTrackEntity = true;
62+
o.MaxQueryConnectionsLimit = Environment.ProcessorCount;
63+
o.ConnectionMode = ConnectionModeEnum.SYSTEM_AUTO;
64+
//if SysTest entity not exists in db and db is exists
65+
//o.AddEntityTryCreateTable<SysTest>(); // or `o.AddEntitiesTryCreateTable(typeof(SysTest));`
66+
})
67+
//.AddShardingQuery((conStr, builder) => builder.UseSqlServer(conStr).UseLoggerFactory(efLogger))//无需添加.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking) 并发查询系统会自动添加NoTracking
68+
.AddShardingTransaction((connection, builder) =>
69+
builder.UseSqlServer(connection).UseLoggerFactory(efLogger))
70+
.AddDefaultDataSource("A",
71+
"Data Source=localhost;Initial Catalog=ShardingCoreDBXA;Integrated Security=True;")
72+
.AddShardingTableRoute(o =>
73+
{
74+
}).End();
5175

5276
services.AddHealthChecks().AddDbContextCheck<DefaultShardingDbContext>();
5377
//services.AddShardingDbContext<DefaultShardingDbContext, DefaultTableDbContext>(

src/ShardingCore/Bootstrapers/EntityMetadataInitializer.cs

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,8 @@
1-
using System;
2-
using System.Collections.Generic;
3-
using System.Linq;
4-
using System.Reflection;
5-
using System.Text;
6-
using Microsoft.EntityFrameworkCore;
1+
using Microsoft.EntityFrameworkCore;
72
using Microsoft.EntityFrameworkCore.Metadata;
83
using Microsoft.Extensions.Logging;
94
using ShardingCore.Core.EntityMetadatas;
105
using ShardingCore.Core.EntityShardingMetadatas;
11-
using ShardingCore.Core.PhysicTables;
126
using ShardingCore.Core.TrackerManagers;
137
using ShardingCore.Core.VirtualDatabase.VirtualDataSources;
148
using ShardingCore.Core.VirtualDatabase.VirtualTables;
@@ -20,10 +14,11 @@
2014
using ShardingCore.Helpers;
2115
using ShardingCore.Jobs;
2216
using ShardingCore.Jobs.Abstaractions;
23-
using ShardingCore.Jobs.Impls;
2417
using ShardingCore.Sharding.Abstractions;
25-
using ShardingCore.TableCreator;
26-
using ShardingCore.Utils;
18+
using System;
19+
using System.Collections.Generic;
20+
using System.Linq;
21+
using System.Reflection;
2722

2823
/*
2924
* @Author: xjm
@@ -33,6 +28,11 @@
3328
*/
3429
namespace ShardingCore.Bootstrapers
3530
{
31+
/// <summary>
32+
/// 对象元数据初始化器
33+
/// </summary>
34+
/// <typeparam name="TShardingDbContext"></typeparam>
35+
/// <typeparam name="TEntity"></typeparam>
3636
public class EntityMetadataInitializer<TShardingDbContext,TEntity>: IEntityMetadataInitializer where TShardingDbContext:DbContext,IShardingDbContext where TEntity:class
3737
{
3838
private readonly IEntityType _entityType;
@@ -42,26 +42,31 @@ public class EntityMetadataInitializer<TShardingDbContext,TEntity>: IEntityMetad
4242
private readonly IVirtualDataSource<TShardingDbContext> _virtualDataSource;
4343
private readonly IVirtualTableManager<TShardingDbContext> _virtualTableManager;
4444
private readonly IEntityMetadataManager<TShardingDbContext> _entityMetadataManager;
45-
private readonly IShardingTableCreator<TShardingDbContext> _tableCreator;
4645
private readonly ILogger<EntityMetadataInitializer<TShardingDbContext, TEntity>> _logger;
4746

4847
public EntityMetadataInitializer(EntityMetadataEnsureParams entityMetadataEnsureParams
49-
, IShardingConfigOption shardingConfigOption,
48+
, IEnumerable<IShardingConfigOption> shardingConfigOptions,
5049
ITrackerManager<TShardingDbContext> trackerManager,IVirtualDataSource<TShardingDbContext> virtualDataSource,IVirtualTableManager<TShardingDbContext> virtualTableManager,
51-
IEntityMetadataManager<TShardingDbContext> entityMetadataManager, IShardingTableCreator<TShardingDbContext> tableCreator,
50+
IEntityMetadataManager<TShardingDbContext> entityMetadataManager,
5251
ILogger<EntityMetadataInitializer<TShardingDbContext, TEntity>> logger
5352
)
5453
{
5554
_entityType = entityMetadataEnsureParams.EntityType;
5655
_virtualTableName = entityMetadataEnsureParams.VirtualTableName;
57-
_shardingConfigOption = shardingConfigOption;
56+
_shardingConfigOption = shardingConfigOptions.FirstOrDefault(o=>o.ShardingDbContextType==typeof(TShardingDbContext));
5857
_trackerManager = trackerManager;
5958
_virtualDataSource = virtualDataSource;
6059
_virtualTableManager = virtualTableManager;
6160
_entityMetadataManager = entityMetadataManager;
62-
_tableCreator = tableCreator;
6361
_logger = logger;
6462
}
63+
/// <summary>
64+
/// 初始化
65+
/// 针对对象在dbcontext中的主键获取
66+
/// 并且针对分库下的特性加接口的支持,然后是分库路由的配置覆盖
67+
/// 分表下的特性加接口的支持,然后是分表下的路由的配置覆盖
68+
/// </summary>
69+
/// <exception cref="ShardingCoreInvalidOperationException"></exception>
6570
public void Initialize()
6671
{
6772
var shardingEntityType = _entityType.ClrType;

src/ShardingCore/DIExtension.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public static ShardingCoreConfigBuilder<TShardingDbContext> AddShardingDbContext
5353
Action<IServiceProvider, DbContextOptionsBuilder> shardingOptionAction = (sp, option) =>
5454
{
5555
var virtualDataSource = sp.GetRequiredService<IVirtualDataSource<TShardingDbContext>> ();
56-
var connectionString = virtualDataSource.GetDefaultDataSource().ConnectionString;
56+
var connectionString = virtualDataSource.GetConnectionString(virtualDataSource.DefaultDataSourceName);
5757
optionsAction?.Invoke(connectionString, option);
5858
option.UseSharding<TShardingDbContext>();
5959
};

src/ShardingCore/DIExtensions/ShardingCoreConfigBuilder.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ public ShardingTransactionBuilder<TShardingDbContext> Begin(Action<ShardingCoreB
4545
ShardingConfigOption.IgnoreCreateTableError = shardingCoreBeginOptions.IgnoreCreateTableError;
4646
ShardingConfigOption.MaxQueryConnectionsLimit = shardingCoreBeginOptions.MaxQueryConnectionsLimit;
4747
ShardingConfigOption.ConnectionMode = shardingCoreBeginOptions.ConnectionMode;
48-
ShardingConfigOption.UseMemoryLimitWhileSkip = shardingCoreBeginOptions.UseMemoryLimitWhileSkip;
4948
foreach (var entityType in shardingCoreBeginOptions.GetCreateTableEntities())
5049
{
5150
ShardingConfigOption.AddEntityTryCreateTable(entityType);
@@ -97,7 +96,6 @@ public class ShardingCoreBeginOptions
9796
public bool? IgnoreCreateTableError { get; set; } = true;
9897
public int MaxQueryConnectionsLimit { get; set; } = Environment.ProcessorCount;
9998
public ConnectionModeEnum ConnectionMode { get; set; } = ConnectionModeEnum.SYSTEM_AUTO;
100-
public int UseMemoryLimitWhileSkip { get; set; } = 10000;
10199

102100
private readonly ISet<Type> _createTableEntities = new HashSet<Type>();
103101

src/ShardingCore/IShardingConfigOption.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,6 @@ public interface IShardingConfigOption
7878
/// 连接数限制
7979
/// </summary>
8080
public ConnectionModeEnum ConnectionMode { get; set; }
81-
/// <summary>
82-
/// 当ConnectionMode == SYSTEM_AUTO时生效
83-
/// </summary>
84-
public int UseMemoryLimitWhileSkip { get; set; }
8581
}
8682

8783
public interface IShardingConfigOption<TShardingDbContext>: IShardingConfigOption where TShardingDbContext : DbContext, IShardingDbContext

0 commit comments

Comments
 (0)