На самом деле и модель-первая, и база-первая имеют одинаковые ограничения.Оба этих подхода используют файл EDMX, который содержит часть SSDL (описание store = уровень базы данных), связанную непосредственно с одним поставщиком базы данных, поэтому, если вы хотите иметь двух разных поставщиков базы данных, вы должны иметь две разные части SSDL и хранить их всинхронизации.Вы можете использовать один CSDL (описание концептуального уровня = классы вашей модели) и один или два MSL (описание сопоставления между SSDL и CSDL - один файл возможен, только если таблицы и столбцы будут иметь одинаковые имена в обоих SSDL).Как я знаю, файл EDMX может состоять только из отдельных частей SSDL, CSDL и MSL, поэтому я ожидаю, что у разработчика нет поддержки для этого сценария, и вам придется изменить второй SSDL вручную или использовать два EDMX = модель, каждое изменение дважды.
Подход, основанный на коде, может сделать это намного проще, но вопрос в том, насколько хорош поставщик Oracle при использовании кода сначала и генерации базы данных.Поставщик отвечает за правильную интерпретацию необходимых функций, таких как последовательности, в случае столбцов с автоинкрементом.
Сам EF в настоящее время не поддерживает обновление существующих БД.При использовании EDMX процесс создания базы данных контролируется либо шаблоном T4, либо рабочим процессом, так что его можно настроить, и уже есть отдельная функция, называемая Power Generation Database Pack Power Pack , которая позволяет наращивать базу данных с помощью пошагового наращивания.модель-первый подход.Проблема в том, что эта функция использует инструменты базы данных VS.Я думаю, что эти инструменты работают только с сервером SQL.Мне никогда не нравились эти автоматизированные инструменты, поэтому я все еще думаю, что обновление базы данных должно контролироваться вручную с помощью некоторых инструментов, чтобы получить скрипт разницы между текущей и последней развернутыми версиями базы данных.Скрипт diff вам нужен только при развертывании новой версии в производственной среде.В среде тестирования и разработки вы всегда можете воссоздать всю базу данных.
При работе с двумя моделями EDMX абстракция не требуется.Модели должны создавать один и тот же концептуальный слой.В таком случае вам нужен только один набор классов POCO, которые сопоставляются соглашениями (то же имя класса, что и у сущности, одинаковые свойства с одинаковыми типами и доступностью), поэтому они будут работать с обеими моделями.
Редактировать:
Основываясь на ответе @Tridus, я просто добавляю, что сначала вы можете создать базы данных и использовать fluentAPI из EF 4.1 для их отображения.Ваши базы данных должны иметь точно такую же схему (имена таблиц, имена столбцов и т. Д.), Они не могут использовать какие-либо конкретные функции (я надеюсь, что последовательности не будут проблемой, потому что именно так Oracle обрабатывает столбцы с автоинкрементом).