При запуске команды update-database происходит ошибка:
There is already an object named 'Weapons' in the database.
Есть несколько моделей EF Core (упрощенная структура):
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>();
}
}
Команда - "add-migration Init" для приведенных моделей выполняется нормально, без ошибок. Но при запуске команды update-database происходит ошибка:
There is already an object named 'Weapons' in the database.
Почему происходит данная ошибка? Какие настройки БД нужно выполнить/удалить/добавить, что бы заставить код работать?
Согласно документации DatabaseFacade.EnsureCreated
Note that this API does not use migrations to create the database. In addition, the database that is created cannot be later updated using migrations. If you are targeting a relational database and using migrations, you can use the DbContext.Database.Migrate() method to ensure the database is created and all migrations are applied.
Вольный перевод
Данное API не использует миграции для создания БД. Кроме того, созданная таким образом БД уже не может быть обновлена при помощи миграций. Если вам нужна реляционная БД и вы используете миграции, вы можете использовать DbContext.Database.Migrate() для того чтобы убедиться, что БД создана и все необходимые миграции применены.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники