在Microsoft Visual Studio 2013的WinForms中为MySql(C#)启用entity framework6

昨天我知道entity framework是除了使用数据集或数据读取器之外访问数据库的另一种方法,然后我试图让我的MySql数据库服务器在MVS 2013中使用entity framework6。

我用.Net FrameWork 4.5.1打开一个WinForms。 (所以我只有App.config,但没有在项目中的应用程序/networkingconfiguration)我安装了mysql-installer-community-5.7.3.0-m13.msi和

通过安装EntityFramework包

工具菜单 – >库包pipe理器 – >pipe理解决scheme的NuGet包… – >联机 – >(search)EntityFramework(小心这个包的版本,它应该是版本6.0.2,如果没有,然后单击更新 – > EntityFramework更新)

当我试图通过添加ADO.NET实体数据模型

右键点击Project – > Add – > New Item – > ADO.NET Entity Data Model – > Generate from Database – > New Connection – > Data sources: – > Change …-> MySQL Database – >用服务器IP,用户名和密码 – >select数据库名称 – >testing连接 – >确定

然后生成实体连接string – >勾选在App.Config中保存实体连接设置为 – >下一步> – >

你想使用哪个版本的entity framework? 有selectentity framework6.0,但你不能使用它,因为

“您的项目引用了entity framework的最新版本;但是,无法为您的数据连接find与此版本兼容的entity framework数据库提供程序,请在执行此操作之前退出此向导,安装兼容的提供程序并重新生成项目。

如何解决这个问题?

顺便说一句,如果你在Nuget Package中安装Entity Framework version 5,那么你可能在这里有Entity Framework 5.0选项,你可能会成功地使用Entity Framework 5而不是版本6。

首先,我们甚至不需要安装mysql-installer- community -5.7.3.0-m13.msi。

  1. 安装最新的mysql-visualstudio-plugin
  2. 安装最新的mysql-connector-net
  3. 新的C#.Net 4.5 Framework WinForms( 4.0版本应该基于Entity Framework 6支持.NET 4.0吗? )
  4. 安装4个Nuget包 (按照顺序,如果你在EntityFramework之前安装了Mysql.Data.Entities,它将parsing依赖并安装EntityFramework 6.0.2,但是我们需要的是EntityFramework 6.1.0

的EntityFramework

Mysql.Data

Mysql.Data.Entities

Mysql.Web

5.如果你在App.config中 标记了entityFramework ,请在标签启动后注释它并在App.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" /> </providers> </entityFramework> 

6.添加ADO.NET实体数据模型 (如上所述)

7. 生成实体连接string (如上所述)并勾选保存App.Config as中的实体连接设置,然后单击下一步

8. select您的数据库对象和设置 (表,视图或存储过程和函数)(不要“您要使用哪个版本的entity framework?”因为我只有一个entity framework6.0提供程序,所以直接跳过如果我唯一的供应商是有效的select)

9.Finish

祝贺^^

顺便说一下,您可能需要添加.dll文件

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

在这个文件夹里面

C:\ Program Files \ MySQL \ MySQL连接器networking6.8.3 \ Assemblies \ v4.5(32位窗口)

C:\ Program Files(x86)\ MySQL \ MySQL Connector Net 6.8.3 \ Assemblies \ v4.5(64位Windows)

作为您进一步EF6function的项目参考。

我按照V-Shy给出的指示,遇到与LaRae White相同的问题,巫师closures了我。 我正在运行VS2015,刚刚使用MySql安装程序更新到Visual Studio v1.2.6和Connector / NET v6.9.8的MySQL。

我最终做了什么来实现它的工作是这样的:

  1. 卸载我以前安装的所有软件包来解决这个问题(EntityFramework,Mysql.Data,Mysql.Data.Entities,Mysql.Web)
  2. 手动添加了C:\ Program Files(x86)\ MySQL \ Connector.NET 6.9 \ Assemblies \ v4.5中的以下参考:MySql.Data.dll,MySql.Data.Entity.EF6.dll和MySql.Web。 DLL

我希望能帮助别人。

我花了整整一天的时间找出如何解决这个问题,没有任何帮助。 显然我找出了一件事情,哪些人不提

在model.edmx属性中有整个“DDL生成模板”,默认设置为“SSDLToSQL10.tt(VS)”,但需要设置为“SSDLToMySQL.tt(VS)”

更何况这也是一个错误:

运行转换:System.NullReferenceException:未将对象引用设置为对象的实例。
bla bla bla
第93行c:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ Extensions \ Microsoft \ Entity Framework Tools \ DBGen \ SSDLToMySQL.tt

是什么导致我在“MySQL for Visual Studio 1.1.3”中官方错误,这将在下一个版本1.1.4中修复,目前尚不可用。

但是,有解决方法:
覆盖“MySql.Data.Entity.EF6.dll”
C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ PrivateAssemblies
从NET连接器中的文件
C:\ Program Files(x86)\ MySQL \ MySQL Connector Net 6.8.3 \ Assemblies \ v4.5 \

确保您的DbContext具有如MySQL文档中所示的注释:

 [DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))] public partial class MyDbContext : DbContext { } 

我一直发现,我的数据库第一个 ASP.NET MVC应用程序将允许我更新我的EDMX文件,直到我把它从另一台机器上的源代码控制。

我希望这可以帮助那些无法更新EDMX的人,或者在entity framework6中使用MySQL的时候发现错误,因为我一直在面对相同的错误,直到我添加了注释。

我有同样的问题,并尝试了各种修复,像这里的一些,也有一些从MySQL论坛,仍然无法更新我的EDMX。

经过一段时间(非常长的时间)之后,我设法使用VS 2013更新3,.Net连接器6.9.4,用于我的MvcApplication的VS 1.2.3的Mysql。

首先,我尝试了一个全新的机器,所有的工作都是通过VS的简单安装,然后是连接器和VS的Mysql。 然后,我也尝试了一个旧的VS 2012,它也工作。 我已经在机器上用EF5编写了一些项目,并假设旧的EF5文件可能会干扰EF6的文件。

所以这就是我所做的,但是你必须记住,这是一个机器相关的问题,我给你列出了我在绝望中尝试的所有事情:

  1. 删除C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ PrivateAssemblies文件夹中的所有MySql。*。dll

  2. 使用Connector文件夹中的文件夹覆盖文件夹C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ PublicAssemblies中的MySql.Data.Entity.dll

  3. 在Nuget控制台中从您的项目中卸载EntityFramework,然后降级到EF 6.0.0:Install-Package EntityFramework -ProjectName YourProject -version 6.0.0

  4. 添加对MySql.Data.Entity.EF6的引用,而不是通过Nuget,而是直接引用文件(C:\ Program Files(x86)\ MySQL \ MySQL Connector Net 6.9.4 \ Assemblies \ v4.5 \ MySql.Data.Entity .EF6.dll)

我的app.config文件看起来像这样

 <configuration> <configSections> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --></configSections> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> <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> <connectionStrings> <!-- your connection string here --> </connectionStrings> </configuration> 

项目中增加的参考资料就是这三个

  • 的EntityFramework
  • EntityFramework.SqlServer
  • MySql.Data.Entity.EF6

也许有些步骤是无用的,但现在我终于可以更新我的EDMX文件,当然,生成和运行Web项目和VS似乎并没有受到删除MySql DLL的影响。 希望它有帮助。

我也有同样的问题。 就我而言,我不得不:

  • 在启动添加模型向导之前添加软件包之后重新构build项目。
  • 卸载最新版本的entity framework包并恢复到版本6.0.0.0。
  • 安装Mysql.Data.Entities后不安装Mysql.Data.Entities.EF6!
  • 更改configuration文件,以便在提供程序中只有一个 MySql.Data.MySqlClient提供程序,并且应包含以下版本:

     <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.9.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider> </providers> 

我有VS2013社区类似的问题,但我不是WinForm,但ASP.NET MVC。 在遵循上述所有解决scheme之后,我的问题仍然存在,但他们(特别是Hamed)给了我一些解决scheme。

所以,如果你仍然滚动到这里,这可能会给你一个想法。 我有:

  1. 安装MySQL Connector NET 6.8.4(6.9.5似乎不起作用)。
  2. 像VS 1.2.3一样支持MySQL(从1.2.3开始,不需要安装1.1.1)。
  3. 从NuGet安装MySQL.data Mysql.Data.entities。
  4. 从D:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ PrivateAssemblies中删除所有MySQL.dll。
  5. Hamed说道。
  6. 重build解决scheme。
  7. 成功添加了新的ADO.NET实体模型。

希望这个帮助。

在过去的两天里挣扎了好几个小时之后,最终帮助我的是将所有的代码恢复到旧的EF5代码,删除ADO .NET实体数据模型并重新添加它, 而不selectentity framework6.0(已禁用) ,但select5.0。 由于最新的mysql连接器,visual studio插件和我上面安装的所有其他东西,Visual Studio自动添加了一个entity framework6.0 ADO实体数据模型,忽略了我的“select”。 然后我添加了所有的引用手动在任何项目要求它(EntityFramework,mysql.data,mysql.data.entity.EF6 ver 6.9.6), 最后它的工作。

修复如下:

  1. 安装MySQL Visual Studio插件
  2. 安装MySQL连接器
  3. 从Program Files中的MySQLConnector程序集项目中添加引用。
  4. 从App.Config或Web.Config中删除旧代码

    <entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> <parameters> <parameter value="mssqllocaldb" /> </parameters> </defaultConnectionFactory> <providers> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> </providers> </entityFramework>

  5. 用下面的代码replace:

    <entityFramework> <defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6"> </defaultConnectionFactory> <providers> <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" /> </providers> </entityFramework>

  6. 重build项目并尝试添加新的ADO .NET实体数据模型

我有像ih303的问题。 我如何解决它:

– 随后的溶液V-SHY

– 如果没有错误信息或类似的东西,向导就会消失 – >做下面的解决scheme(对我有效):

而不是放入:

  <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> 

将其更改为以下内容:

  <entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> <parameters> <parameter value="mssqllocaldb" /> </parameters> </defaultConnectionFactory> <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> 

重build – >添加向导等 – >应该工作。

我设法通过删除以下参考来实现它的工作:

 MySql.Data.Entity.EF6 MySql.Data 

而是我安装了Nuget

MySql.Data.Entity

它所做的不仅仅是添加对上面删除的框架的引用,还会在项目中进行一些configuration更改。 在我安装了nuget之后,我也重build了这个项目,这样dll文件就会被添加到bin目录中。

对我来说,这似乎与32位VS 64位数据库驱动程序有关。

至less在这一点上,我可以切换之间有这个错误,并没有这个错误,通过改变我的configuration为x64。 尝试任何CPU不起作用,并尝试x86不起作用。

我不确定在哪里决定是否使用32位或64位MySQL驱动程序; 安装程序声称要同时安装。

(我还需要添加一个或多个NuGet包MySql.DataMySql.Data.EntityMySql.Data.Entities ,以及EntityFramework 。)

一旦我将模型添加到我的项目中,我就可以将项目切换回x86,而目前没有任何问题。

当我们添加与Oracle连接的项目ADO.NET实体数据模型,然后错误消息显示“您的项目引用最新版本的entity framework…”

解决步骤在这里;

  1. 安装Oracle ODTwithODAC122010作为32Bit

  2. 在VS2017中创build您的项目

  3. 将Active Solution Platform从AnyCPU更改为32位

  4. 打开工具 – > Nuget PackageManager->pipe理解决scheme的Nuget包

  5. 写浏览区“ODP”并安装下一个程序

甲骨文。 ManagedDataAccess和Oracle.ManagedDataAccess.EntityFramework

6.打开工具 – > Nuget PackageManager-> Package Manager Console

7.写这个Install-Package EntityFramework -Version 6.1.1和Enter

8.重新启动Visual Studio来完成该过程

9.重新构build您的应用程序

  1. 添加新项目ADO.NET实体数据模型

11.如果需要添加到Oracle的新连接(数据源= Oracle数据库(ODP.NET,托pipe驱动程序))

一切都好。

注意:我的EF6.1.3不支持VS2017和Oracle ODTwithODAC122010。 但所有这些过程后,我已经改变EF作为一个EF6.1.3它正在工作但我不build议你。

为我工作的解决scheme首先遵循@ V-SHY的步骤并安装MySql.Data.Entity