dotConnect Oracle - миграции - Первоначальная миграция в двух идентичных ветвях говорит о разных моделях

Я только что начал тестировать миграции в нескольких различных командных сценариях, чтобы убедиться, что миграции будут работать должным образом с git / несколькими пользователями / несколькими ветвями. Но я сразу столкнулся с проблемой. В ветке 1 я добавил свою первоначальную миграцию (в существующем проекте со 165 объектами), удалив код в Up/Down (просто использует моментальный снимок модели), затем обновил на основе данных (отлично создает таблицу __MigrationHistory). Я объединяю это с веткой 2 (АБСОЛЮТНО такая же модель — точная копия ветки 1), запускаю update-database с моими недавно объединенными миграциями, и он говорит, что невозможно обновить базу данных, чтобы она соответствовала текущей модели, потому что есть ожидающие изменения. Ожидаемых изменений нет, обе модели абсолютно одинаковы. Есть ли что-то, что мне здесь не хватает? Я думал, что столкнусь с этой проблемой только после того, как миграция выйдет из строя (слияние, изменение модели от разных пользователей).

Итак, почему я должен выполнять начальную миграцию с добавлением как на ветке 1, так и на ветке 2? Они объединены и абсолютно одинаковы.

Примечания: EF 5 (технически 4.4) с .NET 4.0. DevArt dotConnect для Oracle v 8.1.55.0

РЕДАКТИРОВАТЬ: я прочитал этот пост, но я не на разных платформах, я на одном компьютере - просто разные ветки .


person Jack    schedule 23.12.2013    source источник
comment
Если вы делаете add-migration на ветке 2 после слияния, добавляется ли что-нибудь к методу Up()? Отличаются ли метаданные в файле кода/ресурса?   -  person Anders Abel    schedule 24.12.2013
comment
На самом деле я как раз это и делал, и хэш в ветке 1 имеет 85656 символов, а в ветке 2 — 85660 символов.   -  person Jack    schedule 24.12.2013
comment
Иногда при работе с EF Migrations это слишком много черного ящика. Если в метод Up() ничего не добавляется и отличаются только метаданные, я понятия не имею, что делать. Я думал о написании инструмента, который может десериализовать метаданные из кода, а также загружать метаданные из БД и сравнивать их. Если бы у меня было больше времени...   -  person Anders Abel    schedule 24.12.2013
comment
Я сделал то, что вы сказали, и разница в имени моей схемы. Он хранится в EDMX. Мои две базы данных [очевидно] названы по-разному. Тогда возникает интересная проблема. Просто потому, что я нацелен на другую базу данных, у меня всегда будут изменения модели. Это может быть специфично для Oracle / Devart, поэтому я спрошу их.   -  person Jack    schedule 24.12.2013


Ответы (1)


Я понял это, в своем первоначальном тестировании перехода от EDMX к dotConnect code-first + миграции я добавил схему в файлы _Mapping для своих быстрых сопоставлений. Пришлось убрать эту схему. Пример:

Вместо:

this.ToTable("ADDRESS", "SCHEMA");

Мне пришлось использовать:

this.ToTable("ADDRESS");

Также я использую эти параметры в OnModelCreating:

var config = Devart.Data.Oracle.Entity.Configuration.OracleEntityProviderConfig.Instance;
config.Workarounds.IgnoreDboSchemaName = true;
config.Workarounds.IgnoreSchemaName = true;
person Jack    schedule 23.12.2013