diff --git a/src/OSharp.EntityFrameworkCore/MigrationPackBase.cs b/src/OSharp.EntityFrameworkCore/MigrationPackBase.cs index d7ef00cb5..ef1be3ef7 100644 --- a/src/OSharp.EntityFrameworkCore/MigrationPackBase.cs +++ b/src/OSharp.EntityFrameworkCore/MigrationPackBase.cs @@ -8,6 +8,7 @@ // ----------------------------------------------------------------------- using System; +using System.Collections.Generic; using System.Linq; using Microsoft.EntityFrameworkCore; @@ -62,8 +63,11 @@ public override void UsePack(IServiceProvider provider) } } - //种子数据 - var seedDataInitializers = provider.GetServices().OrderBy(m => m.Order); + //初始化种子数据,只初始化当前上下文的种子数据 + IEntityManager entityManager = provider.GetService(); + Type[] entityTypes = entityManager.GetEntityRegisters(typeof(TDbContext)).Select(m => m.EntityType).Distinct().ToArray(); + IEnumerable seedDataInitializers = provider.GetServices() + .Where(m => entityTypes.Contains(m.EntityType)).OrderBy(m => m.Order); foreach (ISeedDataInitializer initializer in seedDataInitializers) { initializer.Initialize(); diff --git a/src/OSharp/Entity/ISeedDataInitializer.cs b/src/OSharp/Entity/ISeedDataInitializer.cs index 512a1bf48..2a305ac58 100644 --- a/src/OSharp/Entity/ISeedDataInitializer.cs +++ b/src/OSharp/Entity/ISeedDataInitializer.cs @@ -7,6 +7,8 @@ // 2020-03-06 21:36 // ----------------------------------------------------------------------- +using System; + using OSharp.Dependency; @@ -23,6 +25,11 @@ public interface ISeedDataInitializer /// int Order { get; } + /// + /// 获取 所属实体类型 + /// + Type EntityType { get; } + /// /// 初始化种子数据 /// diff --git a/src/OSharp/Entity/SeedDataInitializerBase.cs b/src/OSharp/Entity/SeedDataInitializerBase.cs index a95d50128..cec7ee722 100644 --- a/src/OSharp/Entity/SeedDataInitializerBase.cs +++ b/src/OSharp/Entity/SeedDataInitializerBase.cs @@ -40,6 +40,11 @@ protected SeedDataInitializerBase(IServiceProvider rootProvider) /// public virtual int Order => 0; + /// + /// 获取 所属实体类型 + /// + public Type EntityType => typeof(TEntity); + /// /// 初始化种子数据 ///