【问题标题】:How to apply migrations from code (EF Core)如何从代码应用迁移(EF Core)
【发布时间】:2015-10-21 00:00:02
【问题描述】:

这是一些有效的 EF6 迁移代码:

Database.SetInitializer<CmContext>(null);
var settings = new MigrationsConfiguration();
var migrator = new DbMigrator(settings);
migrator.Update();

使用 EF Core 的等价物是什么?

【问题讨论】:

    标签: c# entity-framework-core entity-framework-migrations


    【解决方案1】:

    在 beta 7 及更高版本中,使用:

    using Microsoft.Data.Entity;
    
    ...
    
    context.Database.Migrate();
    

    【讨论】:

    • beta7好像改了?寻找一些关于如何将 beta6 迁移到 beta7 的信息,ApplyMigrations 不再存在,ContextType 属性似乎已经消失了.. 或者我的项目又一次陷入了混乱。 ;)
    • 重新开始 - 发生了很大变化!
    • 你把这段代码放在哪里?似乎初始化程序等发生了很大变化,我不知道这会去哪里。
    • 在你的应用启动代码中,只运行一次
    【解决方案2】:

    对于 Entity Framework Core 1.0.0,确保您拥有 Microsoft.EntityFrameworkCore.Relational NuGet 包。然后导入这个命名空间:

    using Microsoft.EntityFrameworkCore;
    

    最后,获取DbContext 并运行:

    context.Database.Migrate();
    

    【讨论】:

    • context.Database.Migrate() 会创建表还是只创建数据库?
    • 迁移创建所有架构元素,包括表。
    • 对我来说它只创建数据库,数据库中没有表。我在startup.cs 中有这行代码,我正在运行Add-Migration 命令
    【解决方案3】:

    根据 Microsoft 文档,对于比简单地应用项目文件结构中已经存在的迁移更高级的方案,您可以使用 EF Core IMigrator 服务。您可以使用以下访问代码轻松访问内部实现:

    var migrator = myDbContext.GetInfrastructure().GetService<IMigrator>();
    

    【讨论】:

      猜你喜欢
      • 2018-10-02
      • 2022-01-15
      • 2017-12-07
      • 2021-11-23
      • 1970-01-01
      • 2021-07-15
      • 2016-11-06
      • 2022-11-11
      • 1970-01-01
      相关资源
      最近更新 更多