From 08c511964c2e5668f69a9468f6ee1d27aa91ef33 Mon Sep 17 00:00:00 2001 From: xuejiaming <326308290@qq.com> Date: Thu, 23 Feb 2023 21:11:24 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E9=83=A8=E5=88=86=E9=85=8D?= =?UTF-8?q?=E7=BD=AE,=E6=B7=BB=E5=8A=A0=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/WeatherForecastController.cs | 5 +++-- samples/Sample.MySql/Startup.cs | 10 +++++----- .../DefaultModelCacheLockerProvider.cs | 4 +--- .../ShardingConfigurations/ShardingConfigOptions.cs | 4 +--- src/ShardingCore/Sharding/AbstractShardingDbContext.cs | 6 +++++- .../Sharding/Abstractions/IShardingTableDbContext.cs | 3 +++ .../FirstOrDefaultSkipAsyncInMemoryMergeEngine.cs | 4 ++-- src/ShardingCore/ShardingCoreExtension.cs | 2 +- 8 files changed, 21 insertions(+), 17 deletions(-) diff --git a/samples/Sample.MySql/Controllers/WeatherForecastController.cs b/samples/Sample.MySql/Controllers/WeatherForecastController.cs index 0921dabb..15868a0f 100644 --- a/samples/Sample.MySql/Controllers/WeatherForecastController.cs +++ b/samples/Sample.MySql/Controllers/WeatherForecastController.cs @@ -271,8 +271,9 @@ namespace Sample.MySql.Controllers [HttpGet] public async Task Get8() { - var list = new List(); - var sysUserMod = await _defaultTableDbContext.Set().Where(o => list.Contains(o.Id)).ToListAsync(); + var sysUserMod = await _defaultTableDbContext.Set().AsNoTracking().FirstOrDefaultAsync(); + _defaultTableDbContext.Update(sysUserMod); + await _defaultTableDbContext.SaveChangesAsync(); // var sysUserMods1 = await _defaultTableDbContext.Set().FromSqlRaw("select * from SysUserMod where id='2'").ToListAsync(); // var sysUserMods2 = await _defaultTableDbContext.Set().FromSqlRaw("select * from SysTest where id='2'").ToListAsync(); return Ok(); diff --git a/samples/Sample.MySql/Startup.cs b/samples/Sample.MySql/Startup.cs index 152af3fd..e37c565c 100644 --- a/samples/Sample.MySql/Startup.cs +++ b/samples/Sample.MySql/Startup.cs @@ -86,11 +86,11 @@ namespace Sample.MySql })); }).UseConfig((sp,o) => { - var memoryCache = sp.ApplicationServiceProvider.GetRequiredService(); - o.UseExecutorDbContextConfigure(b => - { - b.UseMemoryCache(memoryCache); - }); + // var memoryCache = sp.ApplicationServiceProvider.GetRequiredService(); + // o.UseExecutorDbContextConfigure(b => + // { + // b.UseMemoryCache(memoryCache); + // }); o.UseEntityFrameworkCoreProxies = true; o.CacheModelLockConcurrencyLevel = 1024; o.CacheEntrySize = 1; diff --git a/src/ShardingCore/Core/ModelCacheLockerProviders/DefaultModelCacheLockerProvider.cs b/src/ShardingCore/Core/ModelCacheLockerProviders/DefaultModelCacheLockerProvider.cs index 49506337..0d6ea30d 100644 --- a/src/ShardingCore/Core/ModelCacheLockerProviders/DefaultModelCacheLockerProvider.cs +++ b/src/ShardingCore/Core/ModelCacheLockerProviders/DefaultModelCacheLockerProvider.cs @@ -30,9 +30,7 @@ namespace ShardingCore.Core.ModelCacheLockerProviders public int GetCacheModelLockObjectSeconds() { - if (_shardingConfigOptions.ModelCacheLockObjectSeconds == 3) - return _shardingConfigOptions.CacheModelLockObjectSeconds; - return _shardingConfigOptions.ModelCacheLockObjectSeconds; + return _shardingConfigOptions.CacheModelLockObjectSeconds; } #if !EFCORE2 diff --git a/src/ShardingCore/Core/ShardingConfigurations/ShardingConfigOptions.cs b/src/ShardingCore/Core/ShardingConfigurations/ShardingConfigOptions.cs index de16b8d1..e2c87383 100644 --- a/src/ShardingCore/Core/ShardingConfigurations/ShardingConfigOptions.cs +++ b/src/ShardingCore/Core/ShardingConfigurations/ShardingConfigOptions.cs @@ -17,8 +17,6 @@ namespace ShardingCore.Core.ShardingConfigurations /// 模型缓存锁等待时间 /// public int CacheModelLockObjectSeconds { get; set; } = 3; - [Obsolete("plz use CacheModelLockObjectSeconds")] - public int ModelCacheLockObjectSeconds { get; set; } = 3; #if !EFCORE2 /// /// 模型缓存的优先级 @@ -27,7 +25,7 @@ namespace ShardingCore.Core.ShardingConfigurations /// /// efcore缓存最多限制10240个,单个缓存size设置为10那么就意味可以最多统一时间缓存1024个(缓存过期了那么还是会可以缓存进去的) /// - public int CacheEntrySize { get; set; } = 10; + public int CacheEntrySize { get; set; } = 1; #endif /// /// 模型缓存锁等级 diff --git a/src/ShardingCore/Sharding/AbstractShardingDbContext.cs b/src/ShardingCore/Sharding/AbstractShardingDbContext.cs index 97a8facf..ce2e1980 100644 --- a/src/ShardingCore/Sharding/AbstractShardingDbContext.cs +++ b/src/ShardingCore/Sharding/AbstractShardingDbContext.cs @@ -21,7 +21,7 @@ namespace ShardingCore.Sharding */ /// - /// 分表分库的dbcontext + /// 分表分库的dbContext /// public abstract class AbstractShardingDbContext : DbContext, IShardingDbContext { @@ -36,6 +36,10 @@ namespace ShardingCore.Sharding } private IShardingDbContextExecutor _shardingDbContextExecutor; + /// + /// 分片执行者 + /// + /// public IShardingDbContextExecutor GetShardingExecutor() { if (!_createExecutor) diff --git a/src/ShardingCore/Sharding/Abstractions/IShardingTableDbContext.cs b/src/ShardingCore/Sharding/Abstractions/IShardingTableDbContext.cs index 1f8e510b..5f6779a4 100644 --- a/src/ShardingCore/Sharding/Abstractions/IShardingTableDbContext.cs +++ b/src/ShardingCore/Sharding/Abstractions/IShardingTableDbContext.cs @@ -9,6 +9,9 @@ namespace ShardingCore.Sharding.Abstractions * @Ver: 1.0 * @Email: 326308290@qq.com */ + /// + /// 实现该接口让dbContext支持分表功能 + /// public interface IShardingTableDbContext { /// diff --git a/src/ShardingCore/Sharding/MergeEngines/ShardingMergeEngines/FirstOrDefaultSkipAsyncInMemoryMergeEngine.cs b/src/ShardingCore/Sharding/MergeEngines/ShardingMergeEngines/FirstOrDefaultSkipAsyncInMemoryMergeEngine.cs index f5b90e60..e1bab562 100644 --- a/src/ShardingCore/Sharding/MergeEngines/ShardingMergeEngines/FirstOrDefaultSkipAsyncInMemoryMergeEngine.cs +++ b/src/ShardingCore/Sharding/MergeEngines/ShardingMergeEngines/FirstOrDefaultSkipAsyncInMemoryMergeEngine.cs @@ -25,7 +25,7 @@ namespace ShardingCore.Sharding.MergeEngines } public TEntity MergeResult() { - //将toke改成1 + //将take改成1 var asyncEnumeratorStreamMergeEngine = new AsyncEnumeratorStreamMergeEngine(_streamMergeContext); var list = asyncEnumeratorStreamMergeEngine.ToStreamList(); return list.FirstOrDefault(); @@ -33,7 +33,7 @@ namespace ShardingCore.Sharding.MergeEngines public async Task MergeResultAsync(CancellationToken cancellationToken = new CancellationToken()) { - //将toke改成1 + //将take改成1 var asyncEnumeratorStreamMergeEngine = new AsyncEnumeratorStreamMergeEngine(_streamMergeContext); var take = _streamMergeContext.GetTake(); diff --git a/src/ShardingCore/ShardingCoreExtension.cs b/src/ShardingCore/ShardingCoreExtension.cs index e89fbb1f..16ba232f 100644 --- a/src/ShardingCore/ShardingCoreExtension.cs +++ b/src/ShardingCore/ShardingCoreExtension.cs @@ -276,7 +276,7 @@ namespace ShardingCore } /// - /// 自动尝试补偿表 + /// 自动尝试补偿表,自行判断缺少的分片对象(包括分表或者分库)并且会自动创建对应的数据 /// /// ///