优化 DynamicShardingHelper 的动态添加的代码

This commit is contained in:
xuejiaming 2022-09-22 08:46:39 +08:00
parent a04ca15169
commit a33de9395a
2 changed files with 8 additions and 6 deletions

View File

@ -6,6 +6,7 @@ using Sample.MySql.multi;
using Sample.MySql.Shardings;
using ShardingCore.Core.RuntimeContexts;
using ShardingCore.Core.VirtualRoutes.TableRoutes.Abstractions;
using ShardingCore.Helpers;
namespace Sample.MySql.Controllers
{
@ -57,7 +58,7 @@ namespace Sample.MySql.Controllers
// Console.WriteLine("------------");
// using (var tran = _defaultTableDbContext.Database.BeginTransaction())
// {
var sysUserMods = _defaultTableDbContext.Set<SysUserMod>().OrderBy(o=>o.Id).ThenBy(o=>o.Name);
var firstOrDefault = _defaultTableDbContext.Set<SysUserMod>().FromSqlRaw($"select * from {nameof(SysUserMod)}").FirstOrDefault();
var sysUserMods1 = _defaultTableDbContext.Set<SysTest>()
.Select(o => new ssss(){ Id = o.Id, C = GetAll().Count(x => x.Id == o.Id) }).ToList();

View File

@ -7,7 +7,6 @@ using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using ShardingCore.Core.DbContextCreator;
using ShardingCore.Core.RuntimeContexts;
using ShardingCore.Core.ShardingMigrations.Abstractions;
using ShardingCore.Core.VirtualDatabase.VirtualDataSources.PhysicDataSources;
using ShardingCore.EFCores;
using ShardingCore.Exceptions;
@ -36,8 +35,11 @@ namespace ShardingCore.Helpers
{
var virtualDataSource = shardingRuntimeContext.GetVirtualDataSource();
virtualDataSource.AddPhysicDataSource(new DefaultPhysicDataSource(dataSourceName, connectionString, false));
var dataSourceInitializer = shardingRuntimeContext.GetDataSourceInitializer();
dataSourceInitializer.InitConfigure(dataSourceName,createDatabase,createTable);
if (createDatabase || createTable)
{
var dataSourceInitializer = shardingRuntimeContext.GetDataSourceInitializer();
dataSourceInitializer.InitConfigure(dataSourceName,createDatabase,createTable);
}
}
/// <summary>
/// 动态添加数据源
@ -47,8 +49,7 @@ namespace ShardingCore.Helpers
/// <param name="connectionString"></param>
public static void DynamicAppendDataSourceOnly(IShardingRuntimeContext shardingRuntimeContext, string dataSourceName, string connectionString)
{
var virtualDataSource = shardingRuntimeContext.GetVirtualDataSource();
virtualDataSource.AddPhysicDataSource(new DefaultPhysicDataSource(dataSourceName, connectionString, false));
DynamicAppendDataSource(shardingRuntimeContext, dataSourceName, connectionString, false, false);
}
public static async Task DynamicMigrateWithDataSourcesAsync(IShardingRuntimeContext shardingRuntimeContext,