小编Mas*_*oud的帖子

模块化系统中的EF核心

我开始用asp.net核心开发模块化系统.系统有模块加载器,模块安装程序等.每个模块都有自己动态添加的数据库模型Context

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
      var typeToRegisters = new List<Type>();
      foreach (var module in GlobalConfiguration.Modules)
      {
          typeToRegisters.AddRange(module.Assembly.DefinedTypes.Select(t => t.AsType()));
      }

      RegisterEntities(modelBuilder, typeToRegisters);
      base.OnModelCreating(modelBuilder);
}

private static void RegisterEntities(ModelBuilder modelBuilder, IEnumerable<Type> typeToRegisters)
{
      var entityTypes = typeToRegisters.Where(x => x.GetTypeInfo().IsSubclassOf(typeof(IEntity<>)) && !x.GetTypeInfo().IsAbstract);
      foreach (var type in entityTypes)
      {
          modelBuilder.Entity(type);
      }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果没有迁移,EF Core就无法运行.我可以为所有模块创建所有迁移文件并在start中运行它,但这是错误的.也许一个模块根本不需要安装.

有没有办法让每个模块都有自己的迁移?或以任何方式解决这个问题?

对不起,我的英语不好

谢谢

c# entity-framework entity-framework-core .net-core asp.net-core

2
推荐指数
1
解决办法
520
查看次数