修复命令行迁移bug升级到7.x.1.2 [#229]

This commit is contained in:
xuejiaming 2023-02-16 20:59:35 +08:00
parent fc0781a313
commit be652568c3
6 changed files with 49 additions and 14 deletions

View File

@ -1,10 +1,10 @@
:start
::定义版本
set EFCORE7=7.7.1.1
set EFCORE6=7.6.1.1
set EFCORE5=7.5.1.1
set EFCORE3=7.3.1.1
set EFCORE2=7.2.1.1
set EFCORE7=7.7.1.2
set EFCORE6=7.6.1.2
set EFCORE5=7.5.1.2
set EFCORE3=7.3.1.2
set EFCORE2=7.2.1.2
::删除所有bin与obj下的文件
@echo off

View File

@ -7,6 +7,8 @@ using Microsoft.EntityFrameworkCore.Metadata;
using Sample.MySql.Domain.Entities;
using Sample.MySql.Domain.Maps;
using ShardingCore.Core.VirtualRoutes.TableRoutes.RouteTails.Abstractions;
using ShardingCore.EFCores;
using ShardingCore.Extensions;
using ShardingCore.Sharding;
using ShardingCore.Sharding.Abstractions;
@ -16,6 +18,7 @@ namespace Sample.MySql.DbContexts
{
public DbSet<DynamicTable> DynamicTables { get; set; }
public DbSet<SysUserMod> SysUserMod { get; set; }
public DefaultShardingDbContext(DbContextOptions<DefaultShardingDbContext> options) : base(options)
{
//切记不要在构造函数中使用会让模型提前创建的方法
@ -23,11 +26,11 @@ namespace Sample.MySql.DbContexts
//Database.SetCommandTimeout(30000);
}
// protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
// {
// base.OnConfiguring(optionsBuilder);
// optionsBuilder.UseLazyLoadingProxies();
// }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
base.OnConfiguring(optionsBuilder);
this.GetShardingRuntimeContext().GetOrCreateShardingRuntimeModel(this);
}
private readonly MethodInfo? _configureGlobalFiltersMethodInfo =
typeof(DefaultShardingDbContext).GetMethod(nameof(ConfigureGlobalFilters),
@ -72,6 +75,5 @@ namespace Sample.MySql.DbContexts
}
public IRouteTail RouteTail { get; set; }
}
}

View File

@ -0,0 +1,29 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Internal;
using ShardingCore.Extensions;
namespace ShardingCore.EFCores
{
public class ShardingDbSetInitializer:DbSetInitializer
{
#if !EFCORE2
public ShardingDbSetInitializer(IDbSetFinder setFinder, IDbSetSource setSource) : base(setFinder, setSource)
{
}
#endif
#if EFCORE2
public ShardingDbSetInitializer(IDbSetFinder setFinder, IDbSetSource setSource, IDbQuerySource querySource) : base(setFinder, setSource, querySource)
{
}
#endif
public override void InitializeSets(DbContext context)
{
base.InitializeSets(context);
if (context.IsShellDbContext())
{
context.GetShardingRuntimeContext().GetOrCreateShardingRuntimeModel(context);
}
}
}
}

View File

@ -20,12 +20,15 @@ namespace ShardingCore.Extensions
{
public static class ShardingDbContextExtension
{
public static bool IsShellDbContext(this DbContext dbContext)
{
return dbContext.GetService<IDbContextOptions>().FindExtension<ShardingWrapOptionsExtension>()!=null;
}
public static IShardingDbContextExecutor CreateShardingDbContextExecutor<TDbContext>(
this TDbContext shellDbContext)
where TDbContext:DbContext,IShardingDbContext
{
var shardingWrapOptionsExtension = shellDbContext.GetService<IDbContextOptions>().FindExtension<ShardingWrapOptionsExtension>();
if (shardingWrapOptionsExtension != null)
if (shellDbContext.IsShellDbContext())
{
return new ShardingDbContextExecutor(shellDbContext);
}

View File

@ -78,7 +78,7 @@ namespace ShardingCore.Sharding.ShardingDbContextExecutors
_shardingDbContext = shardingDbContext;
//初始化
_shardingRuntimeContext = shardingDbContext.GetShardingRuntimeContext();
_shardingRuntimeContext.GetOrCreateShardingRuntimeModel(shardingDbContext);
// _shardingRuntimeContext.GetOrCreateShardingRuntimeModel(shardingDbContext);
_shardingConfigOptions = _shardingRuntimeContext.GetShardingConfigOptions();
_virtualDataSource = _shardingRuntimeContext.GetVirtualDataSource();
_dataSourceRouteManager = _shardingRuntimeContext.GetDataSourceRouteManager();

View File

@ -224,6 +224,7 @@ namespace ShardingCore
.UseShardingMigrator()
.UseShardingOptions(shardingRuntimeContext)
.ReplaceService<IQueryCompiler, ShardingQueryCompiler>()
.ReplaceService<IDbSetInitializer, ShardingDbSetInitializer>()
.ReplaceService<IChangeTrackerFactory, ShardingChangeTrackerFactory>()
.ReplaceService<IDbContextTransactionManager,ShardingRelationalTransactionManager>()
.ReplaceService<IStateManager,ShardingStateManager>()