我最近将我的Web项目迁移到Asp.Net Core 2.0和Entity Framework Core 2.0。
Web应用程序正常运行,所有dotnet ef迁移CLI命令都与以下内容不同:
dotnet ef migrations script {migrationname1} {migrationname1} -o my-file-name.sql
查询似乎运行时没有错误,然后不会生成任何用于屏幕或文件的SQL代码。
我在Windows上使用Visual Studio 2017和SQL Server Express(localdb)。
只是想知道自迁移以来是否有其他人遇到过这个问题?
感谢一些帮助,因为在这里或谷歌找不到任何东西。
答案 0 :(得分:3)
电子。 GADS。 LOL
我想出了答案,这太荒谬了。
以下是用于添加迁移的语法:
Add-Migration MigrationName -Context MyDbContext
因为我喜欢节省时间我在包管理器控制台中向上箭头和向下箭头来调用以前的命令。如果您回想起该命令并将Add-Migration更改为Script-Migration,您将最终运行runnig:
Script-Migration MigrationName -Context MyDbContext
这将以静默方式失败并打开一个空的SQL文件! DRAT!
这是您要运行的命令:
Script-Migration -Context MyDbContext
然后它会起作用。如果这不是你的问题,抱歉。我发现在命令中添加-v
选项非常有启发性,我建议您尝试一下。
答案 1 :(得分:1)
经过大量的浪费精力和时间后,看起来这是dotnet ef migrations script
的错误,因为它不像在EF Core 1.0中那样起作用。
Script-Migration -From 20171106124427_061120171243
输出空白
Script-Migration -From 20171106124427_061120171243 -To 20171106124427_061120171243
输出空白(注意-From和-To值相同)
Script-Migration 20171106124427_061120171243
输出空白
Script-Migration -From 20171106122611_061120171225 -To 20171106124427_061120171243
按预期输出SQL语句(注意-From和-To值不同)
无论我是在Visual Studio 2017程序包管理器控制台还是CLI中尝试此操作,我都会得到相同的结果。
经过进一步调查后,答案似乎如下:
Script-Migration -From <PreviousMigration> -To <LastMigration>
看起来我对-From和-To属性的误解似乎是问题,无论这是否曾经用于以前的版本。
我错误地认为-From迁移文件将包含在生成的代码生成中,但经过一些测试后似乎并非如此。