实体框架核心更新-数据库特定迁移

Posted

技术标签:

【中文标题】实体框架核心更新-数据库特定迁移【英文标题】:Entity framework Core Update-database specific migration 【发布时间】:2017-04-08 13:26:28 【问题描述】:

我试图弄清楚如何从 nuget 中的包管理器运行特定迁移。

我尝试过运行:

 update-database -TargetMigration test32

但我确实收到了这条消息:

找不到与参数名称“TargetMigration”匹配的参数。

我从 Microsoft 的文档中了解到该命令到以前的 ef 版本。

所以我不确定它在 ef core 中的情况。

【问题讨论】:

【参考方案1】:

根据EF Core Docs,正确的参数名称是-Target(对于EF Core 1.1)或-Migration(对于EF Core 2.0)

所以在你的情况下:

update-database -target test32

update-database -migration test32

“现代”方式是使用“常规”命令提示符和.NET Core CLI,以及类似dotnet ef database update <target>的命令

【讨论】:

我不赞成您的第二条评论。 :) 包管理器控制台和 .NET 命令行工具同样合法。 Sorry Brice :) 我绝对同意两者都是合法的,但 PMConsole 历史悠久(从 VS 2013 甚至更早?),而 CLI 更新/更年轻且跨平台,所以我使用词“现代”(啤酒) 没有目标参数【参考方案2】:

Dmitry 给出的最佳答案有点不正确。 没有参数-Target。唯一可以应用的参数是-Migration。 因此,正确答案是:

Update-Database -Migration test32

【讨论】:

可以确认。核心 2.0 使用 -migration。 -target 不再重新定位 这会将所有缺少的迁移应用到提供的迁移 (test32),这是您通常想要的,因为迁移可能一个接一个,并且必须按顺序运行。【参考方案3】:

对于 EF Core 3.1,通过包管理器控制台:

dotnet ef database update YourMigrationName

【讨论】:

【参考方案4】:

只是想补充一下 Plastiquewind 提到的内容。在当前版本中,没有 -target 参数。您必须使用-migration。此外,您可以使用 -context 参数指定上下文(如果您有多个)。

Update-database -context MyContext -migration MyMigration

【讨论】:

以上是关于实体框架核心更新-数据库特定迁移的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 .net 核心实体框架迁移更新表(而不是重新创建它们)

实体框架核心问题 - 更新数据库创建“用户”模式

更新核心数据的特定属性

核心数据迁移删除实体数据

text 实体框架核心和sqlite:数据库迁移(使用VS2017 macOS)

实体框架:添加迁移失败,无法更新数据库