Мой проект (WPF, .Net 4.5, EF6) должен ориентироваться на разные СУБД, до сих пор это MSSQL, Oracle, MySql и Firebird. Я начал с создания dbs-зависимых скриптов, которые генерируют базу данных, а затем использовали Entity Frameworks Database-First-approach для создания моделей. Имея стандартную edmx на основе MSSQL и создавая отдельные ssdls для других поставщиков (различные ssdl-файлы могут быть настроены в строках соединения), все это работало довольно хорошо для всех dbms. Проблема, которую я вижу сейчас, заключается в поддержке установки/обновления для 4 или более разных dbms для еще многих клиентов. Мы не будем отправлять администраторам для установки обновлений у наших клиентов, нам скорее нужно что-то вроде общей процедуры настройки/обновления для всех. Это возможно, но вам нужно будет поддерживать разные версии sql-скриптов для каждого dbms и своего рода инструмента установки, который обрабатывает эти сценарии и знает, какие из них будут выполняться для какой базы данных (в зависимости от dbms и текущей версии).Ориентация на различные системы баз данных с EF6 (и первые миграции кода)
При поиске альтернатив я столкнулся с EF Code First Migrations и попытался переключиться на этот подход. Мои попытки основаны на MSSQL и MySql.
Все работает хорошо, когда я придерживаюсь MSSQL или MySql. Создавая миграцию, применяя их к существующим или не существующим базам данных, все это работает очень хорошо. Но я застрял в объединении обеих систем. Например, применение MSSQL-миграций к MySql представляется невозможным. База данных будет создана, но невозможно подключиться из-за несоответствий типов и т. Д. Я предполагаю, что «__Migration» -Table содержит модель, которая была создана на основе MSSQL и теперь несовместима с MySql-провайдером. Просто теория, но, может быть, кто-то знает лучше.
Кто-нибудь знает, как это можно решить? Есть ли способ нацеливаться на разные dbms с EF? Я не могу поверить, что я единственный с этой проблемой, но очень сложно найти информацию об этом. Любая помощь приветствуется, даже направляя меня на другие подходы, чем использование EF таким образом или с использованием EF вообще.