如何恢复数据库EF迁移工具
我有一个数据库,并且不小心删除了__MigrationHistory表。 现在程序会抛出错误,我不能丢失所有的数据。 无论如何恢复我删除的表? 我会丢失我所有的数据库吗?
我手动添加了__MigrationHistory,现在这是错误:
其他信息:无法更新数据库以匹配当前模型,因为有未决的更改并且自动迁移已禁用。 将挂起的模型更改写入基于代码的迁移或启用自动迁移。 将DbMigrationsConfiguration.AutomaticMigrationsEnabled设置为true以启用自动迁移
您可以在项目中“重置”您的迁移状态。 实质上,您将创建一个迁移状态,其中实体框架认为数据库的当前状态是“第一”迁移。 但请注意,这会限制您使用较早的迁移状态回滚到以前版本的应用程序的能力。
add-migration Reset
。 由于迁移文件夹不包含任何先前的迁移,因此Reset
迁移将成为当前状态下模型的完整脚本。 重要请验证此Up
方法是否与当前数据库表状态完全匹配。 Reset
迁移中,注释Up
方法中的所有内容。 我们不想运行Up
方法,因为数据库应该已经匹配这个。 update-database
命令。 这将创建一个新的__MigrationHistory
表并在表中创建一个新行,表示数据库与此Reset
迁移步骤相匹配。 但是,它不会对数据库进行任何更改,因为Up
方法是空的。 Reset
迁移中Up
方法的注释,以便可以为此创建新数据库。 如果你想维护你的迁移历史
CREATE TABLE [dbo].[__MigrationHistory] (
[MigrationId] NVARCHAR (150) NOT NULL,
[ContextKey] NVARCHAR (300) NOT NULL,
[Model] VARBINARY (MAX) NOT NULL,
[ProductVersion] NVARCHAR (32) NOT NULL,
CONSTRAINT [PK_dbo.__MigrationHistory] PRIMARY KEY CLUSTERED ([MigrationId] ASC, [ContextKey] ASC)
);
update-database
命令:它会__MigrationHistory
而不会尝试执行其他任何操作 将您的脚本指向另一个空的数据库。 运行所有的迁移。 将__MigrationHistory
表格和数据__MigrationHistory
到生产数据库中。
上一篇: How to restore database EF migration tools
下一篇: .net