edmx错误'无法转换类型'MySql.Data.MySqlClient.MySqlProviderServices'的对象'System.Data.Common.DBProviderServices'

时间:2018-10-31 14:39:29

标签: mysql edmx

获取edmx错误当尝试为MySQL模型打开edmx设计器时,无法将类型为'MySql.Data.MySqlClient.MySqlProviderServices'的对象转换为类型为'System.Data.Common.DBProviderServices'。我在项目中既有用于SQL服务的Entity Framework 6,也有对MySQL的引用。

这是我在app.config中拥有的

<providers>
<provider invariantName="MySql.Data.MySqlClient"
type="MySql.Data.MySqlClient.MySqlProviderServices, 
MySql.Data.Entity.EF6"/>
<provider invariantName="System.Data.SqlClient"
type="System.Data.Entity.SqlServer.SqlProviderServices, 
EntityFramework.SqlServer" />
</providers>
<system.data>
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" 
description=".Net Framework Data Provider for MySQL"
type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, 
Version=8.0.13.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>

3 个答案:

答案 0 :(得分:0)

我有解决方案,问题是.net连接器版本与dll版本之间不兼容。

在我的情况下,项目使用的是MySql.Data dll的6.9版本,但连接器的版本是8.0。因此,我已经用正确的.net连接器(相同版本)替换了。

答案 1 :(得分:0)

我找到了最佳解决方案。

  1. 我将目标.NET Framework更改为4.5.2(在“项目属性”中)

  2. 将MySQL.Data库更改为v6.10.8(NuGet)

答案 2 :(得分:0)

对于那些升级到VS2019并为Visual Studio 1.2.9安装MySQL的用户,您需要在.edmx文件中编辑以下行(在VS中右键单击.edmx文件,选择{ {1}},然后选择Open With...):

XML (Text) Editor

到以下内容:

        <DesignerProperty Name="UseLegacyProvider" Value="true" />

当我尝试在升级后打开 <DesignerProperty Name="UseLegacyProvider" Value="false" /> 文件时开始出现完全相同的错误消息,因此我从头开始创建了一个新文件,然后运行.edmx来查看更改了。