无法创建实体数据模型 - 使用 MySql 和 EF6
Can't Create Entity Data Model - using MySql and EF6
我正在尝试将 edmx 实体模型添加到我在 Visual Studio 2013 年的 C#/Web 项目中。我的问题是文件未创建。
我执行以下步骤:
- 为项目命名
- 选择'EF Designer from database'
- 从已经测试成功连接到 MySQL 数据库的下拉列表 (localhost) 中选择连接
- 勾选"Save connection settings in webc.config as"选项
- 我点击 'Next' 并且 window 消失了,我回到代码 window
没有创建 edmx 文件。(虽然它适用于 SQL 服务器,但不适用于 MySQL)
我安装了 Entity Framework 6.1.2
,MySql.Data
、MySql.Data.Entities
、MySql.Data.Entity
、MySql.Web
-- 都安装了。
在尝试添加实体模型文件之前,我还重建了项目。
我安装了最新的 MySQL 软件包和最新的 .NET connector
。
运行:Visual Studio 2013 年 Windows 7.
有什么解决办法吗?
我知道解决方法。
Nuget 安装边缘版本的 MySql.Data.* 包,而您可能有以前版本的连接器(在我的例子中,包是 v. 6.9.6,连接器是 6.9.5)。这就到了版本不匹配的地步。
请注意,如果您在 NuGet 中使用 Install-Package MySql.Data.Entities,您将获得更旧的版本,例如6.8.3,所以你必须自己添加引用,并留意你要添加到你的解决方案中的引用。
我通过执行以下操作解决了这个问题:
- 打开MySQL安装程序并安装最新版本的Connector/NET
- 卸载/重新安装最新版本 MySQL.Data.* 版本与新安装的版本相匹配的包 Connector/NET 包
- 重新启动 Visual Studios
- 重建解决方案
我在使用 MySQL 连接器 6.9.8.0 时遇到了同样的问题。虽然我所有的版本都匹配,但这仍然失败了。我在 MySQL 连接器之后安装了 Visual Studio 的新版本(从 2010 年到 2013 年)。对我来说,解决方案是卸载 MySQL Connector for NET,然后重新安装(完全相同的版本)。然后重启Visual Studio。
看来这是同一问题的另一个版本。
VS 2015 仍然有这个错误。
是版本不匹配造成的。
在我的系统上,我有 MySQL 连接器 6.9.6。
在 NuGet 包管理器控制台中发出命令:
Install-Package MySql.Data.Entity
默认安装版本 6.9.8。您的连接器必须与 NuGet 包的实际版本匹配。
您可以从以下位置下载连接器的更新版本:
https://www.mysql.com/products/connector/
这里select"Ado.net driver for MySQL",并下载对应的版本(本例为6.9.8)。
重新打开 Visual Studio,现在向导不会崩溃。
无需重启。
我按照以下步骤解决了这个问题:
在程序包管理器控制台中使用以下命令从 Nuget 中卸载 MySql.Data.Entities
:
Uninstall-Package MySql.Data.Entities
从您的 MySql 连接器安装路径添加对最新 MySql.Data.Entity.EF6.dll
的项目引用:C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.8\Assemblies\v4.5
从其他答案中获取有关 NuGet 版本控制的建议。
我通过删除 Nuget 安装的 .Data
和 Data.Entitiy.EF6
解决了这个问题。
然后右键单击“参考文献”并浏览:
C:\Program Files (x86)\MySQL\Connector.NET 6.9\Assemblies\v4.5\MySql.Data.dll
和
C:\Program Files (x86)\MySQL\Connector.NET 6.9\Assemblies\v4.5\MySql.Data.Entity.EF6.dll
然后我能够使用 .edmx 模型完成 ADO.Net 向导。
您可以执行此解决方案:
- 添加一个新的空 EF 模型。
- 在 emdx 设计中单击并从数据库更新模型。
- 选择您的数据库,然后将生成模型。
这对我有用:)
我在尝试使用 MySQL、ADO.NET(数据库优先)和 EF6 配置 Visual Studio Professional 2017 环境时遇到了同样的情况。
注意:请按相同顺序执行步骤。
Uninstall/remove“Connector/NET”和“MySQL for Visual Studio”(如果已安装)。
安装“MySQL for Visual Studio”v2.0.5 CTP (MySQL for Visual Studio)。
注意:在 Connector/NET.
之前为 Visual Studio 安装 MySQL
安装“Connector/NET”v6.9.10 (Connector/Net)。
https://i.stack.imgur.com/XOT1I.jpg Note: I tried using Connector/NET v6.8, v6.10 and v8 first, but none of them worked with Visual Studio 2017 and ADO.Net. Here you can find all Connector Versions and Compatibilities with Visual Studio IDEs,但到目前为止这个列表是不准确的。
新建 Visual Studio Professional 2017 项目。
通过 NuGet 下载并安装“EntityFramework”v6.2.0,方法是转到项目 Tab/Manage NuGet Packages/Browse -> Entity Framework。
添加对C:\Program Files (x86)\MySQL\Connector.NET 6.9.10\Assemblies\v4.5\MySql.Data.dll
的引用
和
C:\Program Files (x86)\MySQL\Connector.NET 6.9.10\Assemblies\v4.5\MySql.Data.Entity.EF6.dll
;通过右键单击解决方案资源管理器中的引用并选择添加 Reference/Browse -> 浏览按钮。
在 entity framework 供应商下的 App.config 内添加 MySQL EF6 供应商信息如下:
<entityFramework>
<providers>
<provider invariantName="MySql.Data.MySqlClient"
type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
</providers>
</entityFramework>
- 通过构建 tab/Rebuild ProjectName 重建项目。
就是这样。 VS2017 已准备就绪。希望这对每个人都有效,就像今天对我一样。
参考文献:
No Entity Framework provider found for 'MySql.Data.MySqlClient' ADO.NET provider
另一件事要尝试:
--->通过 nuget 安装 entityframework 6.2.0。
--->在您的 web.config/app.config 文件中验证您拥有 System.Data.SqlServerCe.4.0
提供商。如果未安装,则通过 nuget 安装它,与之前安装的 entity framework 完全相同的版本(在本例中为 6.2.0)。
--->然后添加引用:(在本例中来自 connector/NET 版本 6.9.10)
C:\Program Files (x86)\MySQL\Connector.NET 6.9\Assemblies\v4.5\MySql.Data.dll
和 C:\Program Files (x86)\MySQL\Connector.NET 6.9\Assemblies\v4.5\MySql.Data.Entity.EF6.dll
并重建。
--->也尝试添加此提供程序:
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
再次重建。
--->最后,尝试使用新连接添加 .edmx 文件。
我在一台全新的笔记本电脑上安装了 VS2017 和 MySQL,但遇到了同样的问题。
我更改了我的 web.config 文件:
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.EntityFramework, Version=8.0.11.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
收件人:
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6"></provider>
这是针对 ASP.NET MVC 应用程序的,它没有 app.config 文件。
我不会重述失败的尝试,但对我有用的是以下内容:-
- 使用 VS not 运行,下载并安装 "MySQL for Visual Studio 2.0.5" - 撰写本文时的最新版本。
- 启动 VS2017 并卸载 "MySql.Data.Entity" 和 "MySql.Data" NuGet 包,如果
它们之前已安装在 VS2017 中。
- 使用上面的链接下载并安装最新的 MySql connector/NET(撰写本文时为 8.0.13 版)。
- 在您的项目中添加对 "MySql.Data.dll" 和 "MySql.Data.EntityFramework.dll" dll 的引用,如 Lopez93 所述,but N.B。提到的 "MySql.Data.Entity.EF6.dll" 在 8.0.13 中不存在,只有 "MySql.Data.EntityFramework.dll".
- 现在编辑 web.config 文件并确保在该部分中有此行
删除或注释掉任何其他“
重建项目。
再次尝试使用向导。
对我来说这很有效。
祝你好运!
我 运行 解决了从 MySql 版本 6 升级到版本 8.0.17.0 的问题。我为此苦苦挣扎了将近两天,尝试了所有旧的补救措施,直到遇到 this article。
如果您使用的是 EF6 和 8.0 版? MySql,根据这个 post:
MySql.Data.Entity 6.10.7 与 MySql.Data 8.0.11 不兼容。
Oracle 将包重命名为 MySql.Data.EntityFramework for v8.x。您需要卸载 MySql.Data.Entity 并安装 MySql.Data.EntityFramework。
完成这个简单的步骤后,数据连接开始工作,EDMX 设计器也开始工作(尽管我必须回到 2017 年 Visual Studio,因为 VS 2019 的设计器工具在这个 post.)
希望这个更新的 post 对你们中的一些人有所帮助。
为EntityFramework5.0
步骤 1
在https://downloads.mysql.com/archives/c-net/
上安装MySQLConnector/NET版本6.8.4
在 https://dev.mysql.com/downloads/windows/visualstudio/
上为 Visual Studio 安装 MySQL
步骤 2
添加参考:
- MySql.Data
- MySql.Data.Entity.EF5
步骤 3
将代码(在下面)添加到 web.config
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient"></remove>
<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.8.4.0, Culture=neutral" />
</DbProviderFactories>
</system.data>
我正在尝试将 edmx 实体模型添加到我在 Visual Studio 2013 年的 C#/Web 项目中。我的问题是文件未创建。
我执行以下步骤:
- 为项目命名
- 选择'EF Designer from database'
- 从已经测试成功连接到 MySQL 数据库的下拉列表 (localhost) 中选择连接
- 勾选"Save connection settings in webc.config as"选项
- 我点击 'Next' 并且 window 消失了,我回到代码 window
没有创建 edmx 文件。(虽然它适用于 SQL 服务器,但不适用于 MySQL)
我安装了 Entity Framework 6.1.2
,MySql.Data
、MySql.Data.Entities
、MySql.Data.Entity
、MySql.Web
-- 都安装了。
在尝试添加实体模型文件之前,我还重建了项目。
我安装了最新的 MySQL 软件包和最新的 .NET connector
。
运行:Visual Studio 2013 年 Windows 7.
有什么解决办法吗?
我知道解决方法。
Nuget 安装边缘版本的 MySql.Data.* 包,而您可能有以前版本的连接器(在我的例子中,包是 v. 6.9.6,连接器是 6.9.5)。这就到了版本不匹配的地步。
请注意,如果您在 NuGet 中使用 Install-Package MySql.Data.Entities,您将获得更旧的版本,例如6.8.3,所以你必须自己添加引用,并留意你要添加到你的解决方案中的引用。
我通过执行以下操作解决了这个问题:
- 打开MySQL安装程序并安装最新版本的Connector/NET
- 卸载/重新安装最新版本 MySQL.Data.* 版本与新安装的版本相匹配的包 Connector/NET 包
- 重新启动 Visual Studios
- 重建解决方案
我在使用 MySQL 连接器 6.9.8.0 时遇到了同样的问题。虽然我所有的版本都匹配,但这仍然失败了。我在 MySQL 连接器之后安装了 Visual Studio 的新版本(从 2010 年到 2013 年)。对我来说,解决方案是卸载 MySQL Connector for NET,然后重新安装(完全相同的版本)。然后重启Visual Studio。
看来这是同一问题的另一个版本。
VS 2015 仍然有这个错误。 是版本不匹配造成的。
在我的系统上,我有 MySQL 连接器 6.9.6。
在 NuGet 包管理器控制台中发出命令:
Install-Package MySql.Data.Entity
默认安装版本 6.9.8。您的连接器必须与 NuGet 包的实际版本匹配。
您可以从以下位置下载连接器的更新版本:
https://www.mysql.com/products/connector/
这里select"Ado.net driver for MySQL",并下载对应的版本(本例为6.9.8)。 重新打开 Visual Studio,现在向导不会崩溃。 无需重启。
我按照以下步骤解决了这个问题:
在程序包管理器控制台中使用以下命令从 Nuget 中卸载
MySql.Data.Entities
:Uninstall-Package MySql.Data.Entities
从您的 MySql 连接器安装路径添加对最新
MySql.Data.Entity.EF6.dll
的项目引用:C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.8\Assemblies\v4.5
从其他答案中获取有关 NuGet 版本控制的建议。
我通过删除 Nuget 安装的 .Data
和 Data.Entitiy.EF6
解决了这个问题。
然后右键单击“参考文献”并浏览:
C:\Program Files (x86)\MySQL\Connector.NET 6.9\Assemblies\v4.5\MySql.Data.dll
和
C:\Program Files (x86)\MySQL\Connector.NET 6.9\Assemblies\v4.5\MySql.Data.Entity.EF6.dll
然后我能够使用 .edmx 模型完成 ADO.Net 向导。
您可以执行此解决方案:
- 添加一个新的空 EF 模型。
- 在 emdx 设计中单击并从数据库更新模型。
- 选择您的数据库,然后将生成模型。
这对我有用:)
我在尝试使用 MySQL、ADO.NET(数据库优先)和 EF6 配置 Visual Studio Professional 2017 环境时遇到了同样的情况。
注意:请按相同顺序执行步骤。
Uninstall/remove“Connector/NET”和“MySQL for Visual Studio”(如果已安装)。
安装“MySQL for Visual Studio”v2.0.5 CTP (MySQL for Visual Studio)。 注意:在 Connector/NET.
之前为 Visual Studio 安装 MySQL安装“Connector/NET”v6.9.10 (Connector/Net)。 https://i.stack.imgur.com/XOT1I.jpg Note: I tried using Connector/NET v6.8, v6.10 and v8 first, but none of them worked with Visual Studio 2017 and ADO.Net. Here you can find all Connector Versions and Compatibilities with Visual Studio IDEs,但到目前为止这个列表是不准确的。
新建 Visual Studio Professional 2017 项目。
通过 NuGet 下载并安装“EntityFramework”v6.2.0,方法是转到项目 Tab/Manage NuGet Packages/Browse -> Entity Framework。
添加对
C:\Program Files (x86)\MySQL\Connector.NET 6.9.10\Assemblies\v4.5\MySql.Data.dll
的引用 和C:\Program Files (x86)\MySQL\Connector.NET 6.9.10\Assemblies\v4.5\MySql.Data.Entity.EF6.dll
;通过右键单击解决方案资源管理器中的引用并选择添加 Reference/Browse -> 浏览按钮。在 entity framework 供应商下的 App.config 内添加 MySQL EF6 供应商信息如下:
<entityFramework>
<providers>
<provider invariantName="MySql.Data.MySqlClient"
type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
</providers>
</entityFramework>
- 通过构建 tab/Rebuild ProjectName 重建项目。
就是这样。 VS2017 已准备就绪。希望这对每个人都有效,就像今天对我一样。
参考文献:
No Entity Framework provider found for 'MySql.Data.MySqlClient' ADO.NET provider
另一件事要尝试:
--->通过 nuget 安装 entityframework 6.2.0。
--->在您的 web.config/app.config 文件中验证您拥有 System.Data.SqlServerCe.4.0
提供商。如果未安装,则通过 nuget 安装它,与之前安装的 entity framework 完全相同的版本(在本例中为 6.2.0)。
--->然后添加引用:(在本例中来自 connector/NET 版本 6.9.10)
C:\Program Files (x86)\MySQL\Connector.NET 6.9\Assemblies\v4.5\MySql.Data.dll
和 C:\Program Files (x86)\MySQL\Connector.NET 6.9\Assemblies\v4.5\MySql.Data.Entity.EF6.dll
并重建。
--->也尝试添加此提供程序:
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
再次重建。
--->最后,尝试使用新连接添加 .edmx 文件。
我在一台全新的笔记本电脑上安装了 VS2017 和 MySQL,但遇到了同样的问题。
我更改了我的 web.config 文件:
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.EntityFramework, Version=8.0.11.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
收件人:
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6"></provider>
这是针对 ASP.NET MVC 应用程序的,它没有 app.config 文件。 我不会重述失败的尝试,但对我有用的是以下内容:-
- 使用 VS not 运行,下载并安装 "MySQL for Visual Studio 2.0.5" - 撰写本文时的最新版本。
- 启动 VS2017 并卸载 "MySql.Data.Entity" 和 "MySql.Data" NuGet 包,如果 它们之前已安装在 VS2017 中。
- 使用上面的链接下载并安装最新的 MySql connector/NET(撰写本文时为 8.0.13 版)。
- 在您的项目中添加对 "MySql.Data.dll" 和 "MySql.Data.EntityFramework.dll" dll 的引用,如 Lopez93 所述,but N.B。提到的 "MySql.Data.Entity.EF6.dll" 在 8.0.13 中不存在,只有 "MySql.Data.EntityFramework.dll".
- 现在编辑 web.config 文件并确保在该部分中有此行
删除或注释掉任何其他“
重建项目。
再次尝试使用向导。
对我来说这很有效。
祝你好运!
我 运行 解决了从 MySql 版本 6 升级到版本 8.0.17.0 的问题。我为此苦苦挣扎了将近两天,尝试了所有旧的补救措施,直到遇到 this article。 如果您使用的是 EF6 和 8.0 版? MySql,根据这个 post:
MySql.Data.Entity 6.10.7 与 MySql.Data 8.0.11 不兼容。
Oracle 将包重命名为 MySql.Data.EntityFramework for v8.x。您需要卸载 MySql.Data.Entity 并安装 MySql.Data.EntityFramework。
完成这个简单的步骤后,数据连接开始工作,EDMX 设计器也开始工作(尽管我必须回到 2017 年 Visual Studio,因为 VS 2019 的设计器工具在这个 post.)
希望这个更新的 post 对你们中的一些人有所帮助。
为EntityFramework5.0
步骤 1
在https://downloads.mysql.com/archives/c-net/
上安装MySQLConnector/NET版本6.8.4在 https://dev.mysql.com/downloads/windows/visualstudio/
上为 Visual Studio 安装 MySQL步骤 2
添加参考:
- MySql.Data
- MySql.Data.Entity.EF5
步骤 3
将代码(在下面)添加到 web.config
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient"></remove>
<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.8.4.0, Culture=neutral" />
</DbProviderFactories>
</system.data>