Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 重置EF代码第一次迁移状态_Entity Framework_Ef Code First_Entity Framework 5_Entity Framework Migrations - Fatal编程技术网

Entity framework 重置EF代码第一次迁移状态

Entity framework 重置EF代码第一次迁移状态,entity-framework,ef-code-first,entity-framework-5,entity-framework-migrations,Entity Framework,Ef Code First,Entity Framework 5,Entity Framework Migrations,我用的是EF5。我们希望将我们的项目转换为使用代码优先迁移 最初在DBContext文件中,我们有一个IDataBaseInitializer实现,如果数据库不存在,它将创建数据库(使用context.Database.Create) 我想测试迁移概念,所以我最初运行了以下命令: 启用迁移-项目名称MyProjectName (这成功创建了一个带有Configuration.cs文件的迁移文件夹) 添加迁移初始值-ProjectName MyProjectName (这成功创建了与我的模型类匹配

我用的是EF5。我们希望将我们的项目转换为使用代码优先迁移

最初在DBContext文件中,我们有一个IDataBaseInitializer实现,如果数据库不存在,它将创建数据库(使用context.Database.Create)

我想测试迁移概念,所以我最初运行了以下命令:

启用迁移-项目名称MyProjectName (这成功创建了一个带有Configuration.cs文件的迁移文件夹)

添加迁移初始值-ProjectName MyProjectName (这成功创建了与我的模型类匹配的脚本文件)

此时,我想尝试测试升级场景,所以我在模型上创建了一个tmp字段,并重新运行Add Migration命令,该命令似乎按照预期工作

然而,在这一点上,我想重置我的状态。我已还原了VS中的所有更改,从磁盘上的Migrations文件夹中删除了文件,尝试从我的数据库中删除_MigrationsHistory表(并完全删除数据库)。无论我做什么,我都无法通过新的添加迁移来创建包含初始状态的脚本。它总是这样出现。。。这是我最初创建的测试值

public partial class Initial : DbMigration
{
    public override void Up()
    {
       DropColumn("dbo.EventTrackingRecords", "TestValue");
    }

    public override void Down()
    {
        AddColumn("dbo.EventTrackingRecords", "TestValue", c => c.String());
    }
}

我不明白它把这些初始信息保存在哪里。我唯一感兴趣的另一件事是,如果我在删除数据库后运行我的程序,它会根据模型重新创建我的数据库,但它也会创建一个u MigrationHistory表!我不明白context.Database.Create()命令是如何做到这一点的。

EF创建了u MigrationHistory表,以使您的数据库保持最新,如果没有,则发出警告

在模型中编辑某些内容并运行添加迁移时,必须运行更新数据库才能创建新迁移。EF不允许您在创建新迁移时进行挂起的迁移

因此,如果向某个模型添加属性,然后创建迁移,则必须在创建删除属性的新迁移之前更新数据库


希望这有帮助。

我假设您发布的
初始类中的内容是历史记录。你试过从那里删除
DropColumn
AddColumn
并重新运行测试吗?我没有我创建的包含所有模型的初始类。我把所有的东西都还原了,并认为我可以重做。我尝试删除DropColumn和AddColumn。它只是创造了同样的东西。