【问题标题】:MySql and Entity Framework 6MySql 和实体框架 6
【发布时间】:2014-10-13 15:07:18
【问题描述】:

我正在尝试将 EF 6 与 MySQL 一起使用,并通过连接向导显示此错误消息:

您的项目引用了最新版本的实体框架;但是无法为您的数据连接找到与此版本兼容的实体框架数据库提供程序。

搜索互联网似乎这是一个困扰人们的问题,但我看不到任何人有解决方案。

我引用了 EntityFramework 6.1.1 和 MySql.Data 6.9.3、Mysql.Data.Entity.EF5 和 MySql.Data.Entity.EF6 版本 6.8.3。我也用 MySql.Data 6.8.3 尝试过,但同样的事情发生了。

我的 web.config 显示如下:

<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <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>
</entityFramework>

如果有任何想法或帮助,我们将不胜感激 - 否则我将不得不放弃 MySql 并转而使用 Sql Server,这会在我的日程安排中留下一个大漏洞,在我的钱包中留下一个更大的漏洞 :-)。

我看过下面的帖子,但它似乎对我不起作用:

Can't use a MySQL connection for entity framework 6

【问题讨论】:

    标签: mysql asp.net-mvc entity-framework-6


    【解决方案1】:

    在我看来,您有 SQL Server 和 MySQL 的提供程序,并且默认连接工厂用于 SQL Server 提供程序。你两个都需要吗?如果没有,那么您可以完全删除 SQL Server 部分并确保默认连接是 MySQL。

    另外,我注意到您没有发布配置文件的 system.data 部分。我的工作 MySQL 6.9.3 配置有这个部分。

    我的配置如下:

    <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=6.9.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
        </DbProviderFactories>
      </system.data>
      <entityFramework codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6">
        <defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" />
        <providers>
          <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
        </providers>
      </entityFramework>
    

    【讨论】:

    • 感谢您回到我身边 - 我不需要两者,并且已经尝试了大约十几种不同的配置。那是关于 dev.mysql.org 的一份报告,有人通过添加 Sql Server 使其工作...您的建议允许我添加 EF5 模型,这是向前迈出的一步。
    • EF5 对我来说已经足够好了 - 我认为我所做的最大改变是直接在其安装目录中引用 mysql.data 和 mysql.data.entity.ef6 的 Connector/NET 6.9.4 dll .我对此的预感是 NuGet 版本 6.9.3 有问题。我已将此标记为答案,因为那里没有适当的配置文件示例。
    猜你喜欢
    • 2014-04-04
    • 2015-11-13
    • 1970-01-01
    • 2015-12-03
    • 2014-08-24
    • 2014-11-08
    • 2014-07-28
    • 1970-01-01
    • 2016-09-19
    相关资源
    最近更新 更多