实体框架 7 "dnx ef migrations add" 缺失输出文件

3
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文件并未生成。

问题:有人能建议为什么会出现这种情况,或者我该如何进行故障排除吗?

更多细节:

运行命令前后,迁移文件夹的内容如下:

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文件。
但是我并不知道如何对此工具进行故障排除。我没有看到任何调试标志或任何日志文件被写入任何地方。输出中也没有看到任何错误。
我真的希望有人能提供一些好的想法,因为我现在卡住了。
3个回答

1
我遇到了同样的问题,我尝试指定项目、上下文和输出目录,但没有什么好运气。它似乎只是停滞不前,什么都没做。我还尝试在管理员powershell中运行它,以防是某些权限问题,但仍然没有任何作用。
编辑:我尝试在Linux机器上添加新迁移,这似乎创建了良好的迁移。之后创建迁移现在似乎完美地工作了。

如果您有新的问题,请点击提问按钮进行提问。如果您拥有足够的声望,您可以投票支持该问题。或者,将其标记为收藏夹中的“星标”,您将收到任何新答案的通知。 - Enamul Hassan
我也在Linux上尝试了一下。在project.json中添加了这行代码 "EntityFramework.MicrosoftSqlServer.Design": "7.0.0-rc1-final" 后,它在Linux上确实可以工作了。但是在我的Windows电脑上原始项目仍然无法工作。我可以使用Linux机器来解决问题,但这当然非常笨拙和耗时。 - Nikola Schou
我赞同在Linux上进行构建的建议,给你一个+1。 - Nikola Schou

1

经过进一步的研究,我最终意识到为什么迁移文件丢失了。

我再次使用详细标志运行:

dnx ef migrations add 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 文件夹中。

0

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


我尝试使用“-o”和“-outputDir”选项,但似乎失败了:Microsoft.Dnx.Runtime.Common.CommandLine.CommandParsingException: 未识别的命令或参数“Migrations2”。 - Nikola Schou

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