Entity Framework Core 更新数据库特定迁移。

105

我正在努力弄清楚如何从NuGet的包管理器中运行特定的迁移。

我尝试运行了以下命令:

 update-database -TargetMigration test32

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

找不到与参数名 'TargetMigration' 匹配的参数。

这个问题怎么解决?
5个回答

182
根据EF Core文档,正确的参数名称为-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>这样的命令。


26
我不赞同你的第二条评论。:) 包管理器控制台和.NET命令行工具同样合法。 - bricelam
2
抱歉 Brice :) 我完全同意两者都是合法的,但 PMConsole 有着悠久的历史(从VS 2013或更早开始?),而 CLI 则更为新颖和跨平台,所以我使用了"现代"这个词(干杯)。 - Dmitry
11
没有目标参数。 - Andrei Dobrin
@Dmitry,你知道如何通过C#代码实现这个吗? - Juliyanage Silva
没有“-target”参数。请将其删除。 - QMaster

87

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

Update-Database -Migration test32

14
可以确认,core 2.0使用-migration,-target不再被识别。 - JSON
3
这将应用所有缺失的迁移直到提供的那个(test32),这通常是您想要的,因为迁移可能相互依赖并且必须按顺序运行。 - Alexei - check Codidact

27

通过包管理器控制台安装 EF Core 3.1:

dotnet ef database update YourMigrationName

5

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

Update-database -context MyContext -migration MyMigration

0

对于Mac,我是这样操作的,这对我很有效。

dotnet ef database update -c ApplicationDbContext

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接