为自动迁移获取SQL的策略

cbk*_*del 9 entity-framework code-first ef-code-first ef-migrations

我们正在使用EF 5RC,首先是迁移代码.我觉得这应该是一个容易回答的问题(我希望).有没有一种很好的方法来弄清楚自动迁移正在尝试做什么.

我通过Add-Migration PS命令​​添加了一个迁移.我调用了Update-Database,这一切似乎都很好.现在 - 我只是像往常一样运行Update-Database,但出现以下错误:

PM> update-database -Verbose
Using StartUp project 'Web'.
Using NuGet project 'DataAccess'.
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
Target database is: 'UserGroup' (DataSource: (localdb)\v11.0, Provider: System.Data.SqlClient, Origin: Configuration).
No pending code-based migrations.
Applying automatic migration: 201206301526422_AutomaticMigration.
Automatic migration was not applied because it would result in data loss.
Run Code Online (Sandbox Code Playgroud)

请注意,我正在添加-Verbose选项,并且我已经使用-Script再次尝试了它.但我不知道我们要迁移到什么地方; 什么SQL - 或者它认为会导致数据丢失的东西.

我不想在这里简单地启用"允许数据丢失",但我正在尝试了解如何解决这些迁移问题.

先感谢您!

Die*_*hon 18

赶紧跑:

PM> Update-Database -Script -Force
Run Code Online (Sandbox Code Playgroud)

这将生成SQL并在窗口中显示它而不运行它.

  • @Shimmy它不会删除你的行. (2认同)

Zak*_*kos 9

我在发布后在Azure上遇到了这个错误,但你不能使用-Force,所以全局解决方案(并且也不需要本地的-Force)

public Configuration()
{
    AutomaticMigrationsEnabled = true;
    AutomaticMigrationDataLossAllowed = true; // <-- THIS LINE
}
Run Code Online (Sandbox Code Playgroud)