Ориентация на нескольких поставщиков БД (по одному на установку) - PullRequest
0 голосов
/ 10 апреля 2020

Я выполняю миграцию приложения EF 6, которое в настоящее время использует SQL Сервер, чтобы дополнительно использовать MySQL вместо этого. Один или другой будет использоваться для конкретного развертывания. Никогда не смешивайте оба.

У меня проблемы с миграциями EF. Я создаю код миграции с таргетингом на SQL Сервер, затем вручную редактирую сгенерированную миграцию, чтобы применить несколько MySQL -specifi c твиков (например, используя mediumtext вместо varchar(max) для выбранных свойств), когда MYSQL определяется во время компиляции (#if MYSQL). Когда я затем изменяю конфигурацию приложения на целевой MySQL и либо запускаю update-database, либо просто запускаю приложение, база данных приложения и все таблицы создаются, но затем выдается исключение:

Система .ArgumentException: 'Базовый поставщик не поддерживает тип' nvarchar (max) '.'

Обратите внимание, что тип данных SQL Указан для сервера c, а не MySQL. Исключение выдается из внешнего кода (предположительно кода Entity Framework) сразу после вызова следующего метода:

string IMigrationMetadata.Id
{
    get { return "202004101817407_S_InitialMigration"; }
}

Мое рабочее предположение состоит в том, что представление модели данных присутствует в __MigrationHistory и в .resx. сопровождающий файл кода миграции кодирует SQL представление сервера.

Какую стратегию можно использовать, чтобы использовать EF 6 и EF Migrations дополнительно с SQL Server или MySQL?

...