实体框架核心更新-数据库特定迁移
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 核心实体框架迁移更新表(而不是重新创建它们)