![](/img/trans.png)
[英]Could not connect to MySQL through EF6 in Visual Studio 2013
[英]MySQL Connector with EF6 in Visual Studio 2013
我试图通过C#.NET Web MVC应用程序连接到MySQL。
我的问题是,当我尝试根据我的MySQL连接添加从数据库生成的ADO.NET实体数据模型时,我收到以下错误消息:
您的项目引用了最新版本的Entity Framework; 但是,无法为您的数据连接找到与此版本兼容的Entity Framework数据库提供程序。 在执行此操作之前,请退出此向导,安装兼容的提供程序并重建项目
我正在运行以下软件,升级和附件:
NuGet包:
我的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>
..
我已经查看了我可以在这里找到的所有其他解决方案,通常是通过谷歌,尝试了所有这些解决方案似乎没有工作或已经用于非常不同版本的Connector / NET或其他所需的程序。
谁能发现我做错了什么?
我遇到过同样的问题。 安装后:
我不想重新安装Visual Studio,所以经过一些测试,我发现文件夹“ C:\\ Program Files(x86)\\ Microsoft Visual Studio 12.0 \\ Common7 \\ IDE \\ PrivateAssemblies ”包含以下文件的旧版本:
关闭Visual Studio后,我将这些文件替换为“ C:\\ Program Files(x86)\\ MySQL \\ MySQL Connector Net 6.9.5 \\ Assemblies \\ v4.5 ”中的文件,现在它可以工作了!
注意:在上面的子文件夹名称中替换6.9.5,并在系统中安装实际版本。
这对我有用,无需重新安装Visual Studio或任何其他任何东西。
<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>
注意 :确保仅删除entityFramework标记及其子标记,并将其替换为上面的剪切标记。 如果删除任何“额外”标签,您的项目可能会遇到更大的问题,就像我一样。 X)
基本解决方案是重新安装MySQL和VisualStudio, 包括 Entity和.NET。
出于某种原因,我不确定为什么,安装过程会破坏DLL,或者至少那是我和其他同事的经历。 我们的解决方案一直尝试以上所有方面都无济于事。 所以最后我们尝试重新安装,并且它有效。 所以尝试:)
只需添加到web.config:
<system.data>
<DbProviderFactories>
<clear />
<add name="MySQL Data Provider"
invariant="MySql.Data.MySqlClient"
description=".Net Framework Data Provider for MySQL"
type="MySql.Data.MySqlClient.MySqlClientFactory,
MySql.Data" />
</DbProviderFactories>
</system.data>
在尝试再次添加从Database生成的ADO.NET实体数据模型之前,请不要忘记重建解决方案 。
我遇到了同样的问题。 幸运的是,我修复了它。 MySql.Data.dll或MySql.Data.Entity.EF6.dll与EF 6.1 up版本不兼容。 我做了什么,我通过这个命令 - > install-package entityframework -version 6.0.0.0在nuget控制台中安装了EF版本6.0.0.0并解决了这个问题。
现在这不是我自己的问题,但我找到了以下可能的解决方案:
我在这里注意到他有两个额外的包,你没有提到“MySql.ConnectorNET.Entity”和“MySql.ConnectorNet.Data”。 可能是您缺少这些并且需要使用Entity Framework 6.1.1
(来源: 找不到实体框架提供商 )
如果您需要将EntityFramework与mysql数据库一起使用,您只需要使用包管理器控制台安装较旧版本的EntityFramework,例如v 5.0。 编写Install-Package EntityFramework -Version 5.0.0。 请享用。 https://www.nuget.org/packages/EntityFramework/5.0.0
我有一个工作项目与MySQL连接器库和EF6 v6.0.0版本6.8.3。 我记得这个错误,我想我解决了手动向app.config添加一些行。
我列出了我的app.config中与EF6和MySQL配置相关的行,与你的不同,也许它可以帮到你:
<configSections>
...
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
</providers>
</entityFramework>
我已经安装了MySQL Connector Net 6.8.3,并从MySQL站点下载了软件包,并添加了两个对Project的引用:MySql.Data和MySql.Data.Entity.EF6,两者都是6.8.3versión(我注意到你使用的是不同的版本)这些文件...)。
我通过Nuget将EF6(v 6.0.0)添加到项目中。
不是最新版本,但希望这会有所帮助。
解决方案是将此添加到您尝试添加/修改数据模型的项目上的app.config
/ web.config
。
<system.data>
<DbProviderFactories>
<clear />
<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.5.0,
Culture=neutral,
PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
根据您的连接器更改版本。
首先,重新安装vs 1.2.3,将以下引用添加到您的项目或检查它的版本:
MySql.Data.dll
MySql.Data.Entity.EF6.dll
MySql.Web.dll
删除App.config中的默认entityFramework标记或Web.config重建项目,可以添加ADO.NET实体数据模型
我当时正在使用visual studio 2013社区。 想在MySQL db上做Code First。 我遇到了同样的问题“您的项目引用了最新版本的Entity Framework; ...”解决了我的问题的原因是下面给出的简单步骤。
打开Web.config或App.config以更改entityframework和system.data部分,如下所示
<entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> <providers> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices,EntityFramework.SqlServer" /> <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"> </provider> </providers> </entityFramework> <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.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> </DbProviderFactories> </system.data>
此时,请确保重建项目。 (必须的)
现在添加ADO实体模型并选择MySQL,它可以工作。
顺便说一句,我使用的插件是M4VS 1.2.3和MySQL .NET Connector 6.9.7
很简单,我使用Nuget引用MySQL.dll(等),它自动引用.net 4.0 dll。 我刚刚将引用更改为4.5并且它有效。
在nuget命令行中执行
update-package -reinstall -ignoreDependencies
并重建解决方案这项工作或我
我添加了这个为我解决的问题:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
2018年仍有问题......
DB-first场景:对于Visual Studio 2017社区版,我找到了工作组合:
Code-First场景我可以使用官方文档https://dev.mysql.com/doc/connector-net/en/connector-net-entityframework60.html与最新的Connector v.8.0.11和EF6一起运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.