База данных Entity Framework сначала с MySQL и MS SQL - PullRequest
1 голос
/ 06 июня 2011

В настоящее время у меня есть приложение, которое сначала использует базу данных EF, которая была построена на базе данных SQL Server.Я хотел бы разрешить возможность подключения к MSSQL или MySQL.

Я предполагал, что с помощью EF я могу просто изменить строку подключения, чтобы она указала на MySQL, однако, когда я это делаю, я получаю следующую ошибку:

Невозможно привести объект типа 'MySql.Data.MySqlClient.MySqlConnection' к типу 'System.Data.SqlClient.SqlConnection'.

Какие другие шагинеобходимо, чтобы EF работал с MySQL и MSSQL.

Обновление: Строка подключения:

<add name="EntityConnString" connectionString="metadata=res://*/Entities.csdl|res://*/Entities.ssdl|res://*/Entities.msl;provider=MySql.Data.MySqlClient;
provider connection string=&quot;server=localhost;User Id=root;password=password;Persist Security Info=True;database=mydb;Connection Protocol=NamedPipe&quot;" providerName="System.Data.EntityClient" />

1 Ответ

3 голосов
/ 06 июня 2011

Для этого вам нужен отдельный EDMX - или, по крайней мере, часть SSDL и, скорее всего, также часть MSL, указанная в строке подключения. Причина в том, что SSDL (описание хранилища в EDMX) зависит от поставщика = в тот момент, когда ваш SSDL говорит: «Я могу подключиться только к MSSQL». Если вы хотите поддерживать MySQL, вам нужен SSDL, который скажет: «Я могу подключиться только к MySQL» и определит строку подключения в соответствии с используемым сервером базы данных. SSDL содержит специфичные для базы данных определения. Если ваша база данных MySQL будет использовать разные имена таблиц или столбцов или другую схему, вам также потребуется новая часть MSL (описывающая сопоставление между таблицами базы данных и вашими сущностями).

...