dotnet ef migrations script {migrationname1} {migrationname1} -o my-file-name.sql
查询似乎没有出现错误,但是也没有在屏幕或文件中生成任何SQL代码。
我正在使用Visual Studio 2017和Windows上的SQL Server Express(localdb)。
只是想知道是否有其他人在迁移后遇到了这个问题?
希望能得到一些帮助,因为在这里或Google上找不到任何信息。
dotnet ef migrations script {migrationname1} {migrationname1} -o my-file-name.sql
查询似乎没有出现错误,但是也没有在屏幕或文件中生成任何SQL代码。
我正在使用Visual Studio 2017和Windows上的SQL Server Express(localdb)。
只是想知道是否有其他人在迁移后遇到了这个问题?
希望能得到一些帮助,因为在这里或Google上找不到任何信息。
哎呀,天啊。哈哈哈。
我已经得出答案了,而且答案太荒谬了。
以下是添加迁移的语法:
Add-Migration MigrationName -Context MyDbContext
因为我喜欢节省时间,所以在软件包管理器控制台中使用向上箭头和向下箭头来调用先前的命令。如果你回忆起命令并将Add-Migration更改为Script-Migration,你最终会运行:
Script-Migration MigrationName -Context MyDbContext
这将会默默地失败并打开一个空的SQL文件!糟糕!
您需要运行以下命令:
Script-Migration -Context MyDbContext
那么它将会起作用。如果这不是您的问题,抱歉。我发现在命令中添加-v
选项非常有启示性,建议您尝试。
以上是包管理器控制台的PowerShell命令。如果您正在使用命令行中的dotnet ef migrations
,则@Suraj的答案很有帮助。(您需要使用FROM和TO参数)
经过大量的努力和时间浪费,看起来这是一个dotnet ef migrations script
的bug,因为它在EF Core 1.0中的功能已经不再起作用。
Script-Migration -From 20171106124427_061120171243
输出为空
Script-Migration -From 20171106124427_061120171243 -To 20171106124427_061120171243
Script-Migration 20171106124427_061120171243
输出为空
Script-Migration -From 20171106122611_061120171225 -To 20171106124427_061120171243
如预期一样输出SQL语句(注:-From和-To的值不同)
无论我是在Visual Studio 2017 Package Manager控制台还是CLI中尝试,都能得到相同的结果。
经过进一步调查,答案似乎在以下内容中:
Script-Migration -From <PreviousMigration> -To <LastMigration>
看起来,无论以前的版本是否有效,我的误解-From和-To属性都是问题所在。
我错误地认为-From迁移文件将包含在生成的代码中,但经过一些测试,这似乎并不是这种情况。
dotnet ef migrations script FromA FromB
这将在终端中生成脚本
如果你想要生成到一个文件中,使用这个选项
dotnet ef migrations script FromA FromB -o sample.sql