不能使用entity framework6的MySQL连接
我试图使用entity framework6与MySQL。
我没有为Visual Studio 1.1.1和MySQL .Net连接器6.8.3安装MySQL插件。
问题是当我尝试创build一个新的ADO.NET实体模型时,我无法selectMySQL作为连接。
但是,如果我从Visual Studio中的连接工具创build连接,我可以看到MySQL
这意味着当前安装的版本与entity framework6不兼容。在安装最新的连接器和插件后,怎么可能呢? 还有什么要做的吗?
谢谢
编辑
我没有安装默认的连接器,我做了全新安装的MySQL,然后我安装了6.8.3和Visual Studio的插件。
然后我可以看到我为我的实体模型做的连接,但是当我要select实体版本时,我得到这个消息。
最新的编辑
该错误已被修复。
克里斯的评论:
你现在可以在不编辑任何文件或做怪事的情况下完成所有工作。 使用MySQL for Windows安装程序,并包含Visual Studio支持和最新的Connector.Net。 一定要在安装后更新,你会得到最新的(1.2.5和6.9.8)。 使用NuGet安装EntityFramework,MySql.Data和MySql.Data.Entity。 最后,通过添加Ado.Net实体模型,构build并享受代码优先的逆向工程优势。
原始答案
我发现这是来自MySQL的一个错误。
这是解释工作周期的链接。
在VS 2013安装的机器上,VS插件(1.1.3 GA)和Connector / Net
在执行这些步骤之前closures所有VS实例。
在Windows资源pipe理器窗口中,转至此path或您安装Connector / net二进制文件的位置
C:\ Program Files(x86)\ MySQL \ MySQL Connector Net 6.8.3 \ Assemblies \ v4.5 \
复制文件:
MySql.Data.Entity.EF6.dll
并将其粘贴到此文件夹
C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ PrivateAssemblies
如果它要求你覆盖它,请这样做。
您需要pipe理员权限才能覆盖文件。
然后,您可以再次尝试为您的模型生成脚本。
安装VS插件的1.1.3版本是很重要的,因为这个解决方法就是这样的。
不幸的是,它不适合我,所以我降级到entity framework5,直到他们解决这个问题。
编辑
最后,它现在起作用了。
我不得不添加以下3个DLL:
- C:\ Program Files(x86)\ MySQL \ MySQL Connector Net 6.8.3 \ Assemblies \ v4.5 \ MySql.Data.dll
- C:\ Program Files(x86)\ MySQL \ MySQL Connector Net 6.8.3 \ Assemblies \ v4.5 \ MySql.Data.Entity.EF6.dll
- C:\ Program Files(x86)\ MySQL \ MySQL Connector Net 6.8.3 \ Assemblies \ v4.5 \ MySql.Web.dll
然后,我将Webconfiguration中的EntityFramework部分更改为:
<entityFramework codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6"> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> <providers> <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" /> </providers> </entityFramework>
不要忘了重build ,你应该能够用MySQL创build一个entity framework模型。
重要
确保你已经为visual studio 1.1.3和MySQL连接器.net 6.8.3安装了MySQL
解! 2017年
安装Nuget包装:
Install-Package EntityFramework Install-Package MySql.Data.Entity -Version 6.9.9
安装MySQL for Visual Studio 1.2.6 – https://dev.mysql.com/downloads/windows/visualstudio/
Web.Config中的更改
<EntityFramework>
至:
<EntityFramework codeConfigurationType = "MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6">
添加(**您的信息**):
<connectionStrings> <add name="**YourContextName**" connectionString="server=**xxx.xxx.xxx.xxx**;port=3306;user id=**your user**;password=**your password**;database=**your database**" providerName="MySql.Data.MySqlClient" /></connectionStrings>
重新启动Visual Studio
我的设置:
– Microsoft Visual Studio Community 2015
– DotNet框架4.5.2
– Asp.Net MVC 5.2.3.0
– MySql Server 5.6
不知道这是否仍然是一个问题,你们,但是上述解决scheme都不适合我…直到我find这个:
http://www.microsoft.com/en-us/download/details.aspx?id=40762
在应用补丁(VS2013和VS2012)后,我得到了VS2013与MySql的EF6的完美结合。
PS。 已安装的软件包版本(来自NuGet):
EntityFramework – 6.1.3(03/10/2015)
MySqlData – 6.9.6(02/24/2015)
MySql.Data.Entity – 6.9.6(02/24/2015)
MySql.Web – 6.9.6(02/24/2015)
NuGet做的工作正确,并相应地更新Web.Config,用任何需要填充“entityFramework”部分。
对于VS2013,它只是从“不工作”到“function齐全”。 对于VS2012,它可以使用“Code First from Database”,这在应用补丁之前是不可用的。
我希望在10天前我已经find了这个,所以希望这可能仍然有一些帮助。
对于我重新安装MySQL并使用已安装的连接器版本作为Visual Studio工作的参考!
脚步:
- 用最新的稳定的MySQL连接器重新安装MySQL工具。
-
在Visual Studio中添加这3个文件作为参考:
-
MySql.Data.dll
- MySql.Data.Entity.EF6.dll
-
MySql.Web.dll
-
从下面的Web.config中修改
<providers> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> </providers>
至:
<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" /> </providers>
确保您的连接用户名/密码/数据库名称正确,否则Visual Studio可能会崩溃。 (发生在我身上)
你有没有尝试为我的SQL安装最新的网点连接器? http://dev.mysql.com/tech-resources/articles/mysql-installer-for-windows.html或http://dev.mysql.com/downloads/connector/net/取决于您的上下文。;
2015-11-07更新
错误是固定的,你现在可以在不编辑任何文件甚至在NuGet之外引用程序集的情况下完成所有工作。 你只需要安装正确的东西,并添加正确的NuGet包。 就是这样:
使用MySQL for Windows安装程序,并包含Visual Studio支持和最新的Connector.Net。 一定要在安装后更新,你会得到最新的(1.2.5和6.9.8)。
然后,使用NuGet安装EntityFramework,MySql.Data和MySql.Data.Entity。
最后,通过添加Ado.Net实体模型来构build并享受代码优先的逆向工程优势。
我发现这在mySQL Bucktracker上
尝试以下解决方法….
在MySQL数据库上运行以下命令,然后尝试这个工作。
设置全局optimizer_switch ='derived_merge = off'
我还添加了以下程序集:
- EF6作为Nuget包
- MySQL.Data
- MySql.Data.Entity.EF6.dll
- MySQL.Web(不确定是否真的需要)
对于使用多项目解决scheme的每个人,仅供参考,如果由于查找/加载MySql EF6提供程序的问题而无法运行GUI项目,如:
找不到名称为“MySql.Data。(…)”的ADO.NET提供程序的entity framework提供程序。 确保提供程序在应用程序configuration文件的“entityFramework”部分中注册。 有关更多信息,请参阅http://go.microsoft.com/fwlink/?LinkId=260882 。
请看这个问题 。
虽然是关于SqlServer的问题,但问题可能是相同的:如果只有一个项目处理数据库操作,那么很可能是您将Nuget引用添加到MySql.Data
和MySql.Data.Entity
和EntityFramework
到该项目。 由于代码直接使用MySql.Data
和EntityFramework
,因此构build过程足够智能,可将其复制到输出文件夹,并将其第二次复制到GUI项目的输出文件夹中。
但是,由于MySql.Data.Entity
仅由app.config
或web.config
文本文件引用,所以构build过程认为不需要此引用( 代码不使用它!)并将其剥离,而您在GUI项目输出目录中不会看到MySql.Data.Entity.EF6.dll
,这导致GUI项目无法find该提供程序。
所以 – 两个选项 – 确保将东西作为构build过程的一部分(即构build前/构build事件,部署包构build器,CI任务,人工任务等)的一部分复制到该构件中,或者直接引用构件DB / EF6项目。
- 我应该启用还是禁用dynamic代理与entity framework4.1和MVC3?
- entity framework如何与recursion层次结构一起工作? 包括()似乎不能使用它
- 为什么。包容很慢? 通过主键获取多个实体的最有效方法?
- EntityFramework中的ObjectSet包含多less个可用于保持性能?
- 如何使用entity framework中的DataBase中的默认列值?
- entity framework代码 – 第一个空外键
- MetadataException当使用entity framework实体连接
- 为什么LINQ to Entities不能识别方法System.String ToString()?
- 左joinLINQ到实体?