【问题标题】:Entity Framework 7 "dnx ef migrations add" missing output file实体框架 7“dnx ef 迁移添加”缺少输出文件
【发布时间】:2016-02-24 04:19:12
【问题描述】:

EF7 命令

dnx ef migrations add XXX 

突然停止工作。它向控制台提供正常输出...

C:\Users\Nikola\Dev\ScanburSandbox\src\ScanburSandbox>dnx ef migrations add XXX
Done. To undo this action, use 'ef migrations remove'

...但通常的 .cs 和 .designer.cs 文件不会生成。

问题:谁能说明为什么会发生这种情况或我该如何解决它?

更多细节:

运行命令前后的 Migrations 文件夹内容如下:

11-02-2016  00:03             7.629 00000000000000_CreateIdentitySchema.cs
11-02-2016  00:03             6.637 00000000000000_CreateIdentitySchema.Designer.cs
11-02-2016  00:08             9.688 20160210230810_modelv2.cs
11-02-2016  00:08            10.103 20160210230810_modelv2.Designer.cs
12-02-2016  15:38             8.636 20160212083018_modelv3.cs
12-02-2016  15:38            10.065 20160212083018_modelv3.Designer.cs
12-02-2016  15:38            10.058 ApplicationDbContextModelSnapshot.cs

到目前为止,我已经多次成功运行 EF7 工具(“dnx ef 迁移”和“dnx ef 数据库”),每次都取得了预期的结果。这意味着“dnx ef migrations add XXX”每次执行都会添加一个新的.cs和.designer.cs文件。无论模型类是否发生变化,都会发生这种情况。

我不知道如何解决此工具的问题。我在任何地方都没有看到任何调试标志或任何日志文件。我在输出中没有看到任何错误。

我真的希望有人有聪明的想法,因为我被困在这里。

【问题讨论】:

    标签: entity-framework entity-framework-core dnx


    【解决方案1】:

    我遇到了同样的问题,我在指定项目、上下文和输出目录时运气不佳。似乎它只是停滞不前,没有做任何事情。我也尝试在管理员 powershell 中运行它,以防它是一些权限问题,但仍然没有。

    编辑:我尝试在 linux 机器上添加新的迁移,这似乎可以很好地创建迁移。之后创建迁移现在似乎工作得很好。

    【讨论】:

    • 如果您有新问题,请点击 按钮提出问题。如果您有足够的声誉,you may upvote 的问题。或者,将其“加注”为收藏夹,您将收到任何新答案的通知。
    • 我也在 Linux 上试过。将此行添加到 project.json "EntityFramework.MicrosoftSqlServer.Design": "7.0.0-rc1-final" 后,它实际上可以在 Linux 上运行。虽然仍然无法在我的 Windows pc 上的原始项目中工作。我可以使用 Linux 机器作为解决方法,但这当然非常笨拙且耗时。
    • 对于在 Linux 上构建的建议,我给 +1。
    【解决方案2】:

    经过更多研究,我终于意识到迁移文件丢失的原因。

    我再次使用详细标志运行: dnx ef 迁移添加 v3 -v

    这是输出:

    Finding DbContext classes...
    Using context 'ApplicationDbContext'.
    An operation was scaffolded that may result in the loss of data. Please review the migration for accuracy.
    Reusing directory of file '00000000000000_CreateIdentitySchema.cs'.
    Reusing directory of file 'ApplicationDbContextModelSnapshot.cs'.
    Writing migration to
    'c:\Users\Nikola\Dev\SdmWeb\src\SdmWeb\bin\output\approot\src\SdmWeb\Migrations\20160223195618_v1.cs'.
    Writing model snapshot to
    'c:\Users\Nikola\Dev\SdmWeb\src\SdmWeb\bin\output\approot\src\SdmWeb\Migrations\ApplicationDbContextModelSnapshot.cs'.
    Done. To undo this action, use 'ef migrations remove'
    

    这里的棘手点是,它正在“重用...的目录”,然后它说它正在将迁移文件写入...\bin\output\approot\src。

    清理 bin 文件夹并再次运行后,迁移文件按预期在 ...\Migrations 下的 Migration 文件夹中生成。

    【讨论】:

      【解决方案3】:

      你有更多的 DbContext 或多个项目吗?如果您没有收到错误,我猜您的文件会写在其他地方。尝试为 dnx ef migrations add XXX 指定所有选项,例如输出目录、项目名称和上下文类名称。 如果您在项目文件夹中键入以下命令,则可以查看该命令的所有可用选项。我会指定所有这些,看看结果如何。您可能需要使用新的迁移名称来确保您可以安全地跟踪命令结果。 dnx ef 迁移添加 --help

      【讨论】:

      • 我尝试使用 -o 和 -outputDir 选项,但似乎失败了:Microsoft.Dnx.Runtime.Common.CommandLine.CommandParsingException: Unrecognized command or argument 'Migrations2'
      猜你喜欢
      • 2018-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-23
      • 2019-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多