1

我不确定我做了什么,但是在发布到 azure 时出现此错误:

Automatic migration was not applied because it would result in data loss.

现在这是非常令人讨厌的。我的模型与我的数据库 100% 匹配 - 如果我强制它,是否有可能会丢失数据?我真的很困惑现在该怎么办。

自动迁移就这么多:S 自动化不多 :) 我认为我的错误是我创建了新模型,发布了它,EF 为它们创建了新表。然后我记得我忘记将模型添加到我的DbContext. 所以我将新内容添加DbSets到上下文中并发布。那可能是它出错的地方。但是话又说回来,我不知道 EF 是否将模型添加到数据库中,如果它们不是 POCO 类或者它们被称为什么。可能是一些外键触发了……不知道。无论如何,我对我的代码进行了撤消狂热,并删除了所有新创建的表和东西,以使我进入我的起点。我认为这可能会解决它。但是noooee愚蠢的我。

任何想法从哪里开始解决这个问题?我要跳下悬崖我丢失了我的数据:)

4

2 回答 2

2

您可以让 EF 为您创建 SQL,以便您可以手动实施迁移。在包管理器控制台中输入:

update-database -v -f -script

它将打开一个新窗口,其中包含您可以查看的 SQL,然后将自己直接应用于数据库。在迁移历史中输入条目的最后一行将允许 DbContext 知道它正在查看正确的版本。

于 2013-02-27T18:13:14.780 回答
1

先做好备份!如果您使用 SQL Compact,则特别容易 - 只需复制文件即可。或者使用 LocalDB 或 SQL Server,分离,复制文件,附加..

但是为了提供更多帮助,生成该脚本可能仍然需要您寻找可能导致数据丢失的原因。我发现即使保留原始列,添加一个新列成为表中的主键也可能会丢失数据,因为对新列强制执行 NOT NULL 约束会导致(所有)行被删除。

于 2013-06-22T01:58:50.460 回答