当我 运行 我的项目时,EF Core 迁移会自动 运行 吗?

Is EF Core Migrations automatically ran when I run my project?

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

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

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

总而言之,问题是:

  1. EF Core Migrations 能否在应用程序的 运行 上自动创建数据库?

  2. EF Core Migrations 能否在检测到应用程序 运行 上的差异时自动更新数据库?

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

  4. 如果它自动更新,如果我手动删除迁移会怎样?数据库中的快照和迁移 table 会不同步,对吗?会发生什么?

  5. 如果无法在 运行 上自动 create/update,您如何将数据库和更改部署到您的客户?

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

From the perspective of automatic migrations as a feature, we are not planning to implement it in EF Core as experience has showed code-base migrations to be a more manageable approach.

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

您可以使用 .NET Core CLI

查看如何操作

查看如何使用 Package Manager Console (Visual Studio)

您可以 运行 在 Startup.cs 中自动迁移,方法是添加:

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

DataContextFactory 是实现 IDbContextFactory<DataContext>.

的工厂