Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.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
C# 获得';无法更新数据库错误';在发出enable migrations命令时_C#_.net_Entity Framework_Entity Framework Migrations - Fatal编程技术网

C# 获得';无法更新数据库错误';在发出enable migrations命令时

C# 获得';无法更新数据库错误';在发出enable migrations命令时,c#,.net,entity-framework,entity-framework-migrations,C#,.net,Entity Framework,Entity Framework Migrations,我在项目中首先使用EF 6和代码 我试图理解如何使用“启用迁移”命令 DbContext和初始值设定项示例的最简单形式如下所示。 当我发出“启用迁移”命令时,package manager控制台会输出如下错误: 无法更新数据库以匹配当前模型,因为存在挂起的更改,并且禁用了自动迁移。将挂起的模型更改写入基于代码的迁移或启用自动迁移。将DbMigrationsConfiguration.AutomaticMiggrationsEnabled设置为true以启用自动迁移 但是如果我不调用Initia


我在项目中首先使用EF 6和代码
我试图理解如何使用“启用迁移”命令
DbContext和初始值设定项示例的最简单形式如下所示。

当我发出“启用迁移”命令时,package manager控制台会输出如下错误:

无法更新数据库以匹配当前模型,因为存在挂起的更改,并且禁用了自动迁移。将挂起的模型更改写入基于代码的迁移或启用自动迁移。将DbMigrationsConfiguration.AutomaticMiggrationsEnabled设置为true以启用自动迁移

但是如果我不调用
InitializeDatabase()方法未发生错误,并且没有数据导入或种子方法未运行。
只有数据库才能创建

如果我使用
InitializeDatabase()
方法,我想了解这个错误的原因和含义
多谢各位

public class MyDbContext : DbContext
{
    public MyDbContext():base("TestDb")
    {
        Database.SetInitializer(new DbContextInitializer());
        InitializeDatabase();
    }

    protected virtual void InitializeDatabase()
    {
        if (!Database.Exists())
        {
            Database.Initialize(true);
        }
    }

    public DbSet<TestModel> TestModels { get; set; }
}

public class DbContextInitializer : CreateDatabaseIfNotExists<MyDbContext>
{
    protected override void Seed(MyDbContext context)
    {
        base.Seed(context);
        context.TestModels.Add(new TestModel() {
            Name = "Lorem",
            Surname = "Ipsum"
        });
    }
}
公共类MyDbContext:DbContext
{
public MyDbContext():base(“TestDb”)
{
SetInitializer(新的DbContextInitializer());
初始化为tabase();
}
受保护的虚拟void InitializeDatabase()
{
如果(!Database.Exists())
{
数据库初始化(true);
}
}
公共DbSet TestModels{get;set;}
}
公共类DbContextInitializer:CreateDatabaseIfNotExists
{
受保护的覆盖无效种子(MyDbContext上下文)
{
种子(上下文);
context.TestModels.Add(新的TestModel(){
Name=“Lorem”,
姓氏=“Ipsum”
});
}
}

您的初始值设定项是从CreateDatabaseIfNoteExists继承的,这不是迁移的逻辑选择。您有一些未应用的挂起模型更改,因为模型已更改,并且只有在数据库不存在时才会运行初始值设定项

您可以删除数据库,使其通过更改重新初始化,或者将初始值设定项切换到。这里有一篇关于这个问题的好文章