1

我目前有一个应用程序,它首先使用 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" />
4

1 回答 1

3

为此,您需要单独的 EDMX - 或者至少是 SSDL 部分,而且很可能还需要在连接字符串中指定的 MSL 部分。原因是 SSDL(EDMX 中的存储描述)依赖于提供商 = 目前您的 SSDL 说:“我只能连接到 MSSQL”。如果你想支持 MySQL,你需要 SSDL,它会说:“我只能连接到 MySQL”,并根据使用的数据库服务器定义连接字符串。SSDL 包含特定于数据库的定义。如果您的 MySQL 数据库将使用不同名称的表或列或不同的模式,您还需要一个新的 MSL 部分(描述数据库表和实体之间的映射)。

于 2011-06-06T08:24:08.243 回答