Entity Framework 7 "dnx ef migrations add" 缺少输出文件

Entity Framework 7 "dnx ef migrations add" missing output file

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 migrations" 和 "dnx ef database")多次取得成功,每次都取得了预期的结果。这意味着 "dnx ef migrations add XXX" 每次执行时都会添加一个新的 .cs 和 .designer.cs 文件。无论模型 类 是否有变化,这都会发生。

我不知道如何对该工具进行故障排除。我没有在任何地方看到任何调试标志或任何日志文件。我在输出中没有看到任何错误。

当我被困在这里时,我真的希望有人有好主意。

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

我遇到了同样的问题,我在指定项目、上下文和输出目录方面不太顺利。它似乎只是在拖延而不做任何事情。我也在 Administrator powershell 中尝试 运行 以防出现权限问题,但仍然没有。

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

经过更多的研究,我终于明白了为什么迁移文件丢失了。

我 运行 再次使用详细标志: 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\Migrations160223195618_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'

这里的棘手点是,它是 'reusing directory of...',然后它说它正在将迁移文件写入 ...\bin\output\approot\src。

再次清理 bin 文件夹和 运行 后,如预期的那样,迁移文件直接在 ...\Migrations 下的 Migration 文件夹中生成。