Добавить миграцию для существующей базы данных - PullRequest
0 голосов
/ 12 июня 2019

У меня есть база данных с данными.У меня есть контекст.Сейчас я пытаюсь добавить начальную миграцию для существующей БД.

Я попробовал следующую команду в консоли PM:

add-migration InitialCreate -IgnoreChanges

Но, как я понял, -IgnoreChanges не работает для EFCore.

Есть ли способ решить эту проблему?

1 Ответ

0 голосов
/ 19 июня 2019

В результате я применил решение этой проблемы.

  1. В MSSQL Management Studio был сгенерирован скрипт для вставки данных (я помещаю его в текстовый файл, чтобы не потерять его).
  2. Я удалил базу данных.
  3. В консоли диспетчера пакетов Visual Studio я вызвал команду Add-Migration InitialExist для проекта уровня данных.Результатом этого действия является папка Migrations с первой миграцией и моментальным снимком контекста.
  4. Затем в консоли диспетчера пакетов была выполнена команда Update-database.Создана новая база данных с таблицей __EFMigrationsHistory.Эта таблица содержит важную начальную запись.Сценарий для создания этой таблицы следующий:

    USE [my_database_name]
    GO

    /****** Object:  Table [dbo].[__EFMigrationsHistory]    Script Date: 6/19/2019 3:16:26 PM ******/
    SET ANSI_NULLS ON
    GO

    SET QUOTED_IDENTIFIER ON
    GO

    CREATE TABLE [dbo].[__EFMigrationsHistory](
        [MigrationId] [nvarchar](150) NOT NULL,
        [ProductVersion] [nvarchar](32) NOT NULL,
     CONSTRAINT [PK___EFMigrationsHistory] PRIMARY KEY CLUSTERED 
    (
        [MigrationId] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    GO

В MSSQL Management Studio я применил ранее сгенерированный скрипт для вставки своих данных.

Готово.Эти действия позволили мне инициализировать миграцию на моем компьютере разработчика.Для производства я запускаю скрипт, создающий таблицу __EFMigrationsHistory и вставляющий начальную запись в базу данных prod.

...