diff --git a/samples/Sample.MySql/DbContexts/DefaultShardingDbContext.cs b/samples/Sample.MySql/DbContexts/DefaultShardingDbContext.cs index 8e0a344f..80cec380 100644 --- a/samples/Sample.MySql/DbContexts/DefaultShardingDbContext.cs +++ b/samples/Sample.MySql/DbContexts/DefaultShardingDbContext.cs @@ -33,6 +33,9 @@ namespace Sample.MySql.DbContexts _configureGlobalFiltersMethodInfo?.MakeGenericMethod(entityType.ClrType) .Invoke(this, new object[] { modelBuilder, entityType }); } + + modelBuilder.Entity().HasData(new SysUserLogByMonth() { Id = "1", Time = DateTime.Now }); + modelBuilder.Entity().HasData(new SysTest() { Id = "1", UserId = "123" }); } diff --git a/samples/Sample.MySql/Startup.cs b/samples/Sample.MySql/Startup.cs index 22e17dc2..565cfdc5 100644 --- a/samples/Sample.MySql/Startup.cs +++ b/samples/Sample.MySql/Startup.cs @@ -196,21 +196,21 @@ namespace Sample.MySql // var shardingRuntimeContext = app.ApplicationServices.GetRequiredService(); // var entityMetadataManager = shardingRuntimeContext.GetEntityMetadataManager(); // var entityMetadata = entityMetadataManager.TryGet(); - using (var scope = app.ApplicationServices.CreateScope()) - { - var defaultShardingDbContext = scope.ServiceProvider.GetService(); - // if (defaultShardingDbContext.Database.GetPendingMigrations().Any()) - { - try - { - - defaultShardingDbContext.Database.Migrate(); - } - catch (Exception e) - { - } - } - } + // using (var scope = app.ApplicationServices.CreateScope()) + // { + // var defaultShardingDbContext = scope.ServiceProvider.GetService(); + // // if (defaultShardingDbContext.Database.GetPendingMigrations().Any()) + // { + // try + // { + // + // defaultShardingDbContext.Database.Migrate(); + // } + // catch (Exception e) + // { + // } + // } + // } // using (var scope = app.ApplicationServices.CreateScope()) // { // var defaultShardingDbContext = scope.ServiceProvider.GetService(); diff --git a/src/ShardingCore/Extensions/DbContextExtension.cs b/src/ShardingCore/Extensions/DbContextExtension.cs index c964d751..b233dde1 100644 --- a/src/ShardingCore/Extensions/DbContextExtension.cs +++ b/src/ShardingCore/Extensions/DbContextExtension.cs @@ -192,15 +192,23 @@ namespace ShardingCore.Extensions public static void RemoveDbContextRelationModelSaveOnlyThatIsNamedType(this DbContext dbContext, Type shardingType) { -#if !EFCORE2&&!EFCORE3&&!EFCORE5&&!EFCORE6 - throw new NotImplementedException(); +#if !EFCORE2 && !EFCORE3 && !EFCORE5 && !EFCORE6 + 1 #endif #if EFCORE2 ||EFCORE3 ||EFCORE5 var contextModel = dbContext.Model as Model; #endif #if EFCORE6 - var contextModel = dbContext.GetService().Model; ; + var contextModel = dbContext.GetService().Model; + var entityTypes = contextModel.GetEntityTypes(); + foreach (var entityType in entityTypes) + { + if (entityType.GetFieldValue("_data") is List _data) + { + _data.Clear(); + } + } var contextModelRelationalModel = contextModel.GetRelationalModel() as RelationalModel; var valueTuples = contextModelRelationalModel.Tables @@ -214,6 +222,15 @@ namespace ShardingCore.Extensions #if EFCORE5 var contextModelRelationalModel = contextModel.RelationalModel as RelationalModel; + + var entityTypes = contextModel.GetEntityTypes(); + foreach (var entityType in entityTypes) + { + if (entityType.GetFieldValue("_data") is List _data) + { + _data.Clear(); + } + } var valueTuples = contextModelRelationalModel.Tables .Where(o => o.Value.EntityTypeMappings.All(m => m.EntityType.ClrType != shardingType)) .Select(o => o.Key).ToList(); @@ -225,6 +242,14 @@ namespace ShardingCore.Extensions #if EFCORE2 || EFCORE3 var entityTypes = contextModel.GetFieldValue("_entityTypes") as SortedDictionary; + + foreach (var entityType in entityTypes) + { + if (entityType.GetFieldValue("_data") is List _data) + { + _data.Clear(); + } + } var list = entityTypes.Where(o=>o.Value.ClrType!=shardingType).Select(o=>o.Key).ToList(); for (int i = 0; i < list.Count; i++) {