我创建了一个简单的Web API项目来测试EF迁移。我在包管理器控制台中调用了Add-Migration Initial,并创建了初始迁移和文件夹。现在我运行了我的项目,我希望它能自动创建数据库。但它没有,它会引发登录错误。
我调用了Update-Database,并创建了数据库。
它不应该在访问上下文时自动创建数据库吗?添加新迁移文件时怎么办?当它看到快照与数据库不同时(或者是否使用迁移表),它是否会在运行时自动更新我的数据库?
总结一下,问题是:
EF Core Migrations可以在应用程序运行时自动创建数据库吗?
EF Core Migrations在检测到存在差异时,是否可以在应用程序运行时自动更新数据库?
比较差异有什么用?实际的数据库结构和快照?
如果它自动更新,如果手动删除迁移会怎样? DB中的快照和迁移表不同步,对吧?会发生什么?
如果无法在运行时自动创建/更新,您如何将数据库和更改部署到客户?
答案 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
了解如何操作 进行操作