Подтвердить что ты не робот

Lose EF Code First Migration при работе в разных ветвях TFS?

Мы используем TFS и имеем разные ветки для нашего Dev.

  • в ветке A мы выполнили миграцию, чтобы изменить размер столбца

  • в ветке B мы сделали переход для добавления новой таблицы. Эта ветка не знает о модификации ветки А!

  • обе модификации объединены с основной ветвью.

Когда я делаю базу данных обновлений, она выполняет 2 миграции, но в конце говорит мне, что есть ожидающие изменения. Если я делаю Add-Migration, он создает то же самое, что и первая миграция (в ветке A).

Невозможно обновить базу данных в соответствии с текущей моделью, поскольку есть ожидающие     изменения и автоматическая миграция отключены. Либо напишите ожидающую модель     изменения в миграции на основе кода или автоматическая миграция. Задавать     DbMigrationsConfiguration.AutomaticMigrationsEnabled to true, чтобы включить автоматическое     миграция.     Вы можете использовать команду "Добавить-миграцию", чтобы записать ожидающие изменения модели в     переход на основе кода.

Это потому, что чего-то не хватает в содержимом свойства Target de IMigrationMetadata моей последней миграции, поскольку он не знал о первом?

Можно ли обрабатывать миграции в разных ветвях TFS?

4b9b3361

Ответ 1

Шаг миграции EF содержит файл метаданных, который имеет подпись модели, которая является результатом этапа миграции. Проблема при слиянии заключается в том, что подпись миграции, выполненная в ветке B, не включает материал, сделанный в процессе миграции в ветке A. До тех пор, пока миграция находится в ветких, это верно. При слиянии это становится неправильным.

Чтобы исправить это, вам необходимо восстановить метаданные последней миграции с помощью

add-migration MyMigrationName

Запуск add-migration при существующей миграции без параметра -force будет восстанавливать только метаданные.

Я написал подробный обзор сценария слияния в сообщении EF Migration и Merge Conflict в своем блоге.

Ответ 2

Как дополнение к ответам Андерса Абеля и для тех из вас, у кого возникла проблема при попытке восстановить последние метаданные миграции, заставляя EF создавать отдельную миграцию с добавленным к ней 1.

Вы должны указать полную метку даты/времени.

например.

Если имя файла предыдущей миграции 201701011322_MakeChangesToPotatoTable

Затем вы должны включить полное имя должным образом в команду "Add-Migration".

т.е.

Add-Migration 201701011322_MakeChangesToPotatoTable