Копировать и синхронизировать изменения базы данных в моделях Entity Framework - PullRequest
0 голосов
/ 06 сентября 2018

Сначала мы используем Entity Framework Code, и наши модели находятся на C #. Один из наших администраторов баз данных добавил дополнительный столбец, как мы перенесем его изменения в наш Net Core Project? Есть ли командная строка для автоматической синхронизации?

Мы знаем, что приведенная ниже командная строка займет всю базу данных и поместит ее в C #. Нас интересуют только небольшие измененные изменения.

Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018
  1. Добавить столбец к модели.
  2. Генерация миграции.
    Будет сгенерирован файл миграции 20180906120000_add_dba_column.cs

  3. Вручную добавить новую запись о только что созданной миграции в таблицу _EFMigrationHistory
    запись: MigrationId: 20180906120000_add_dba_column, ProductVersion: <copy from previous migration>

Если вы хотите сделать это автоматически, значит, вы хотите объединить два разных подхода одновременно.

Я думаю, что была причина, по которой команда EF разделила подходы "EF Code First" и "EF Database first".

Когда вы выбираете EF Code first подход, это означает, что источником правды является код вашего приложения.
Если вы хотите, чтобы stick придерживался подхода, основанного на коде, это означает, что вы должны обучить своего администратора баз данных писать EF-миграции.

0 голосов
/ 06 сентября 2018

Это все, что у тебя есть. Использование существующей базы данных является делом «все или ничего». Либо вы управляете своими сущностями с помощью кода и переносите изменения обратно в свою базу данных, либо вы удаляете сущности из своей базы данных. Другими словами, изменение базы данных означает, что вам нужно перестроить все. Нет такой вещи как «миграция кода».

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

РЕДАКТИРОВАТЬ (основываясь на комментариях к вопросу)

Хорошо, так что, если вы делаете код в первую очередь, тогда никто не должен когда-либо вручную касаться базы данных. Период. Вы должны просто сделать это правилом. Если администратор базы данных хочет внести изменение, он может сообщить об этом вашей команде, где вы можете внести соответствующие изменения в код и передать обратно сценарий SQL для выполнения миграции. Здесь DevOps вступает в игру. Ваш администратор базы данных должен быть частью вашей команды, и вы все должны принимать решения вместе. Если вы не можете этого сделать, это не сработает.

...