检索自动迁移失败详细信息

时间:2019-05-18 09:39:31

标签: c# entity-framework visual-studio-2015 database-migration

在ASP.NET Entity Framework 6项目中,我添加了新的模型和控制器。 我已启用自动迁移,但禁用了数据丢失。

这些更改后我运行应用程序时,实际上已将新表创建到数据库中,但是应用程序告诉我:

  

未应用自动迁移,因为这会导致数据丢失

没有其他细节。如我在其他问题中所读到的,我试图发布:

Database-Update -Script

获得“差异”,但是什么也没有发生,只是相同的错误消息。 除非我确定它将要做什么,否则我真的不想强制进行更新。

我应该怎么做才能检索当前迁移的内容? 我尝试查看dbo .__ MigrationHistory表,但“模型”字段包含二进制数据。

更新

我能够使用this方法对Model字段进行解码,但是edmx文件仅包含db的整个图,而不包含迁移将发出的实际命令。

此外,即使根据工具本身的建议添加-Verbose标志:

PM> Update-Database -Verbose
Using StartUp project 'MyProject'.
Using NuGet project 'MyProject'.
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.

它不显示SQL语句...

1 个答案:

答案 0 :(得分:1)

之所以显示该消息,是因为您可能对模型进行了一些更改,从而导致了DROP命令(例如,删除属性)。

要查看该特定迁移的脚本,即最新迁移与其之前的迁移之间的更新,可以使用以下命令:

Update-Database -Script -SourceMigration: <migrationBeforeTheLastOne> -TargetMigration: <lastMigration>

ChW's answer中所述。