在Visual Studio 2013中使用EF6的MySQL连接器

Eax*_*Eax 21 c# mysql asp.net-mvc entity-framework

我试图通过C#.NET Web MVC应用程序连接到MySQL.

我的问题是,当我尝试添加一个ADO.NET实体数据模型,从数据库中生成的,根据我的MySQL连接,我收到以下错误信息:

您的项目引用了最新版本的Entity Framework; 但是,无法为您的数据连接找到与此版本兼容的Entity Framework数据库提供程序.在执行此操作之前,请退出此向导,安装兼容的提供程序并重建项目

我正在运行以下软件,升级和附件:

  • Visual Studio 2013
  • MySQL Server v5.6.21
  • MySQL For Visual Studio v1.2.3
  • Connector/NET v6.9.4

NuGet包:

  • EntityFramework v6.1.1
  • MySQL.Data v6.9.3
  • MySQL.Data.Entities v6.8.3.0
  • SQL.Web v6.9.3

我的web.config,entityFramework块:

    ..
</system.webServer>
<entityFramework>
  <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" />
  </providers>
</entityFramework>
<runtime>
    ..
Run Code Online (Sandbox Code Playgroud)

我已经看过了所有其他解决方案,我可以在这里找到在SO和一般通过谷歌,尝试了所有的人,并没有任何的解决方案似乎已经奏效或已经非常不同的版本连接器/ NET或其他所需的程序的.

谁能发现我做错了什么?

小智 23

我遇到过同样的问题.安装后:

  • Visual Studio 2013社区版
  • MySQL for Visual Studio 1.2.3
  • MySQL Connector .NET 6.9.5

我不想重新安装Visual Studio,所以经过一些测试,我发现文件夹" C:\ Program Files(x86)\ Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies "包含以下文件的旧版本:

  • MySql.Data.dll
  • MySql.Data.Entity.EF6.dll
  • MySql.Web.dll

关闭Visual Studio后,我将这些文件替换为" C:\ Program Files(x86)\ MySQL\MySQL Connector Net 6.9.5\Assemblies\v4.5 "中的文件,现在它可以工作了!

注意:在上面的子文件夹名称中替换6.9.5,并在系统中安装实际版本.


Ste*_*vic 18

这对我有用,无需重新安装Visual Studio或任何其他任何东西.

  • 安装了最新的MySQL visual studio插件和MySQL连接器网
  • 删除了App.config或Web.config中的entityFramework标记及其所有子标记.
  • 以下代码替换它:
<entityFramework>
  <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" />
    <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
  </providers>
</entityFramework>
Run Code Online (Sandbox Code Playgroud)
  • 添加了 MySql.Data.dll,MySql.Data.Entity.EF6.dll和MySql.Web.dll(如果不是WPF应用程序)对项目的引用.
  • 重建项目,然后添加ado.net模型.

注意:确保仅删除entityFramework标记及其子标记,并将其替换为上面的剪切标记.如果删除任何"额外"标签,您的项目可能会遇到更大的问题,就像我一样.X)


Lar*_*sen 8

基本解决方案是重新安装MySQL和VisualStudio,包括 Entity和.NET.

出于某种原因,我不确定为什么,安装过程会破坏DLL,或者至少那是我和其他同事的经历.我们的解决方案一直尝试以上所有方面都无济于事.所以最后我们尝试重新安装,并且它有效.所以尝试:)

  • 重新安装就行了,谢谢Lars!下一个人看的快速侧记.重新安装后,您可能会遇到ADO.NET对象向导崩溃.这可以通过以下方式解决:"结果是我的项目中的引用必须被删除并再次从Extension选项卡中选择.然后我编译了所有内容并使用了"Code First from database"并且它工作正常!"来自: http://forums.mysql.com/read.php?174,606395,618190#msg-618190哪个至少对我有用. (4认同)