【发布时间】:2018-05-24 11:01:07
【问题描述】:
这个问题已被问过几次,但没有一个解决方案/文档对我有用。
场景 - 我需要从头开始构建一个数据库并使用所有代码的迁移对其进行编辑,根据文档,下面的行应该从 DbContext/ModelBuilder 创建数据库。
_dbContext.Database.Migrate();
然而,这只是创建数据库本身,并没有创建任何表。如果我改为运行以下命令,
_dbContext.Database.EnsureCreated();
数据库和所有表都已创建,但这不是一个选项,因为我需要通过进一步的迁移进行编辑。我在 Migrate 行之后直接尝试了下面的代码,但 pendingMigrations 始终为 0。
var pendingMigrations = _dbContext.Database.GetAppliedMigrations().ToList();
if (pendingMigrations.Any())
{
var migrator = _dbContext.Database.GetService<IMigrator>();
foreach (var targetMigration in pendingMigrations)
migrator.Migrate(targetMigration);
}
这里有什么我遗漏的吗? Database.Migrate() 不应该在创建表的同时创建数据库吗?
注意 - 在测试中,我会在尝试其他方法之前删除数据库。
【问题讨论】:
-
_dbContext.Database.Migrate();应该创建表。它在我的(不仅仅是我猜的)测试中做到了。 -
找到答案,现在发布
标签: asp.net-core-2.0 database-migration ef-core-2.0