2012-05-23 4 views
2

Мы используем EF Code First с ручной миграцией (AutomaticMigrationsEnabled = false;). Проблема в том, что нам нужно разделить одну базу данных между двумя проектами.EF Migration - одна база данных, два проекта

Project-A 
---DbContext-A 
---------Model1 
---------Model2 
---------Model3 

Project-B 
---DbContext-A 
---------Model2 
---------Model3 
---------Model4 

Некоторые из файлов миграции являются одинаковыми, но некоторые из них отличаются. Например: Project-B нуждается в Model4, но Project-A не ...

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

Что было бы лучшим способом справиться с этим сценарием?

ответ

4

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

Если это не вариант, вам необходимо отключить проверку совместимости с моделью. Проверка совместимости выполняется как часть реализации IDBInitializer.InitializeDatabase, которая отвечает за вызов Database.CompatibleWithModel, поэтому для написания собственного пользовательского инициализатора базы данных, который ничего не делает, вы пройдете мимо этого шага. Это также означает, что вы берете на себя ответственность за обеспечение совместимости базы данных с моделью. EF больше не поможет.

Смежные вопросы