我运行项目时是否会自动运行EF Core Migrations?

时间:2016-09-19 04:38:46

标签: entity-framework asp.net-core ef-migrations

我创建了一个简单的Web API项目来测试EF迁移。我在包管理器控制台中调用了Add-Migration Initial,并创建了初始迁移和文件夹。现在我运行了我的项目,我希望它能自动创建数据库。但它没有,它会引发登录错误。

我调用了Update-Database,并创建了数据库。

它不应该在访问上下文时自动创建数据库吗?添加新迁移文件时怎么办?当它看到快照与数据库不同时(或者是否使用迁移表),它是否会在运行时自动更新我的数据库?

总结一下,问题是:

  1. EF Core Migrations可以在应用程序运行时自动创建数据库吗?

  2. EF Core Migrations在检测到存在差异时,是否可以在应用程序运行时自动更新数据库?

  3. 比较差异有什么用?实际的数据库结构和快照?

  4. 如果它自动更新,如果手动删除迁移会怎样? DB中的快照和迁移表不同步,对吧?会发生什么?

  5. 如果无法在运行时自动创建/更新,您如何将数据库和更改部署到客户?

2 个答案:

答案 0 :(得分:1)

您可以通过添加以下内容在Startup.cs自动运行迁移:

var dbFactory = new DataContextFactory();
var dbContext = dbFactory.Create(new DbContextFactoryOptions());
dbContext.Database.Migrate();

DataContextFactory是实施IDbContextFactory<DataContext>的工厂。

答案 1 :(得分:0)

EF核心支持Automatic Migrations。所以你必须手动完成。

  

从自动迁移的角度来看,我们不是   计划在EF Core中实现它,因为经验显示了代码库   迁移是一种更易于管理的方法。

您可以在此处阅读全文:Not to implement Automatic Migrations

您可以使用.NET Core CLI

了解如何操作

了解如何使用Package Manager Console (Visual Studio)

进行操作