C# “时获取错误”;“更新数据库”;命令正在运行:已存在名为';的对象';在数据库中

C# “时获取错误”;“更新数据库”;命令正在运行:已存在名为';的对象';在数据库中,c#,asp.net,entity-framework,ef-core-2.1,C#,Asp.net,Entity Framework,Ef Core 2.1,我有几个EF核心模型: abstract class Weapon { public int Id { get; set; } public string Name { get; set; } } class Axe : Weapon { } class Sword : Weapon { } class GameDbContext : DbContext { public DbSet<Weapon> Weapons { get; set;

我有几个EF核心模型:

abstract class Weapon {
   public int    Id   { get; set; }
   public string Name { get; set; }
}

class Axe : Weapon {
}

class Sword : Weapon {
}

class GameDbContext : DbContext {
    public DbSet<Weapon>   Weapons   { get; set; }

    public GameDbContext(DbContextOptions options) : base(options){
        this.Database.EnsureCreated();
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder) {
         base.OnModelCreating(modelBuilder);

         this.SetModelsConfigurations(modelBuilder);

         modelBuilder.Entity<Axe>  ().HasBaseType<Weapon>();
         modelBuilder.Entity<Sword>().HasBaseType<Weapon>();
    }
}
抽象类武器{
公共int Id{get;set;}
公共字符串名称{get;set;}
}
职业:武器{
}
剑类:武器{
}
类GameDbContext:DbContext{
公共数据库集{get;set;}
PublicGameDbContext(DbContextOptions选项):基本(选项){
this.Database.recreated();
}
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder){
基于模型创建(modelBuilder);
此.setModelsConfiguration(modelBuilder);
modelBuilder.Entity().HasBaseType();
modelBuilder.Entity().HasBaseType();
}
}
当我运行“添加迁移”命令时,一切都正常。但当我运行“更新数据库”命令时,我得到一个错误:

数据库中已经有一个名为“武器”的对象


此数据库未创建。为什么会出现这个错误?请向我解释应如何配置DB模型。

仅使用Migrate或MigrateAsync。这将已经创建一个数据库。CreateDatabase命令本身将根据其当前模型创建数据库,而不考虑迁移逻辑。@Silvermind这是命令吗?还是方法?@Silvermind(我发现问题出在方法:this.Database.resured()“updatedatabes”上命令是在删除此方法后执行的。很抱歉,我以为您在代码中使用了迁移。如果您使用cli,您应该能够根据Ah使用更新数据库,这就是我将它们混淆的原因。是的,我的意思是重新创建而不是创建数据库。不要在迁移中使用该命令。;)