Skip to content

Commit

Permalink
修复命令行迁移bug升级到7.x.1.2 [#229]
Browse files Browse the repository at this point in the history
  • Loading branch information
xuejmnet committed Feb 16, 2023
1 parent fc0781a commit be65256
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 14 deletions.
10 changes: 5 additions & 5 deletions nuget-publish.bat
Original file line number Diff line number Diff line change
@@ -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
Expand Down
14 changes: 8 additions & 6 deletions samples/Sample.MySql/DbContexts/DefaultShardingDbContext.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
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;

Expand All @@ -16,18 +18,19 @@ public class DefaultShardingDbContext : AbstractShardingDbContext, IShardingTabl
{
public DbSet<DynamicTable> DynamicTables { get; set; }
public DbSet<SysUserMod> SysUserMod { get; set; }

public DefaultShardingDbContext(DbContextOptions<DefaultShardingDbContext> options) : base(options)
{
//切记不要在构造函数中使用会让模型提前创建的方法
//ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
//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),
Expand Down Expand Up @@ -72,6 +75,5 @@ protected void ConfigureGlobalFilters<TEntity>(ModelBuilder modelBuilder, IMutab
}

public IRouteTail RouteTail { get; set; }

}
}
29 changes: 29 additions & 0 deletions src/ShardingCore/EFCores/ShardingDbSetInitializer.cs
Original file line number Diff line number Diff line change
@@ -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);
}
}
}
}
7 changes: 5 additions & 2 deletions src/ShardingCore/Extensions/ShardingDbContextExtension.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ public ShardingDbContextExecutor(DbContext shardingDbContext)
_shardingDbContext = shardingDbContext;
//初始化
_shardingRuntimeContext = shardingDbContext.GetShardingRuntimeContext();
_shardingRuntimeContext.GetOrCreateShardingRuntimeModel(shardingDbContext);
// _shardingRuntimeContext.GetOrCreateShardingRuntimeModel(shardingDbContext);
_shardingConfigOptions = _shardingRuntimeContext.GetShardingConfigOptions();
_virtualDataSource = _shardingRuntimeContext.GetVirtualDataSource();
_dataSourceRouteManager = _shardingRuntimeContext.GetDataSourceRouteManager();
Expand Down
1 change: 1 addition & 0 deletions src/ShardingCore/ShardingCoreExtension.cs
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,7 @@ public static DbContextOptionsBuilder UseSharding(
.UseShardingMigrator()
.UseShardingOptions(shardingRuntimeContext)
.ReplaceService<IQueryCompiler, ShardingQueryCompiler>()
.ReplaceService<IDbSetInitializer, ShardingDbSetInitializer>()
.ReplaceService<IChangeTrackerFactory, ShardingChangeTrackerFactory>()
.ReplaceService<IDbContextTransactionManager,ShardingRelationalTransactionManager>()
.ReplaceService<IStateManager,ShardingStateManager>()
Expand Down

0 comments on commit be65256

Please sign in to comment.