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

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

我尝试过运行:

 update-database -TargetMigration test32

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

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

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

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

【问题讨论】:

    标签: c# entity-framework-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
      

      【讨论】:

        猜你喜欢
        • 2020-06-21
        • 1970-01-01
        • 2021-06-27
        • 1970-01-01
        • 2021-09-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-16
        相关资源
        最近更新 更多