Я не могу обновить базу данных с помощью Entity Framework Core - PullRequest
5 голосов
/ 16 октября 2019

У меня есть приложение ASP.NET Core, которое использует SQL Server и EF Core. Он содержит две таблицы. Я успешно создал миграцию Entity Framework Core и обновил с ней базу данных для первой таблицы с именем Pies.

Затем, после добавления другой таблицы с именем Feedbacks, я создал вторую миграцию.

Однако, когда я пытаюсь обновить базу данных, происходит сбой, и я получаю эту ошибку:

Номер ошибки: 2714, Состояние: 6, Класс: 16
Уже существует объект с именем'Пироги' в базе данных.

Вот класс DbContext:

public class AppDbContext : DbContext
{
    public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
    {
    }

    public DbSet<Pie> Pies { get; set; }
    public DbSet<Feedback> Feedbacks { get; set; }
}

Ответы [ 2 ]

2 голосов
/ 16 октября 2019

Поскольку вы испортили историю записей миграций EF Core, удалив файл миграции, а ваш снимок также испорчен, потому что вы повторно запустили миграции после удаления.

Вот шаги, которые вы должны предпринять:

  1. Удалить все оставшиеся миграции
  2. Удалить базу данных
  3. Создать новую начальную миграцию
  4. Создайте новую базу данных.

В будущем, чтобы избежать этих ошибок, используйте систему контроля версий, такую ​​как git. И перед созданием каких-либо миграционных коммитов. Обратите внимание, что вам нужно будет удалить неправильно примененный перенос в вашу базу данных из таблицы _EfMigrations в вашей базе данных, так как git не контролирует версию вашей базы данных.

1 голос
/ 16 октября 2019

Эта ошибка возникает, когда существует разница между данными в таблице базы данных и файлами в базе данных.

Скорее всего, вы создали базу данных один раз, а затем удалили папку с мигренью

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...