无法创建实体数据模型 - 使用MySql和EF6

时间:2015-01-30 17:34:35

标签: mysql entity-framework visual-studio-2013 mysql-connector ado.net-entity-data-model

我正在尝试将edmx实体模型添加到Visual Studio 2013中的C#/ Web项目中。我的问题是该文件未创建。

我执行以下步骤:

  1. 为该项目命名
  2. 从数据库'
  3. 中选择' EF Designer
  4. 从已经测试成功连接到MySQL数据库
  5. 的下拉列表(localhost)中选择连接
  6. "将webc.config中的连接设置保存为"选项已选中
  7. 点击“下一步”'然后窗口消失了,我回到了代码窗口
  8. 没有创建edmx文件。(虽然它适用于SQL Server,但不适用于MySQL)

    我安装了Entity Framework 6.1.2MySql.DataMySql.Data.EntitiesMySql.Data.EntityMySql.Web - 全部已安装。

    在尝试添加实体模型文件之前,我还重建了项目。

    我已使用最新的.NET connector安装了最新的MySQL软件包。

    在Windows 7上运行:Visual Studio 2013。

    任何想法如何解决这个问题?

13 个答案:

答案 0 :(得分:67)

在尝试使用MySQL,ADO.NET(数据库优先)和EF6配置Visual Studio Professional 2017环境时,我遇到了同样的情况。

注意:请按照相同的顺序执行步骤。

  1. 如果已安装,请卸载/删除“Connector / NET”和“MySQL for Visual Studio”。

  2. 安装“MySQL for Visual Studio”v2.0.5 CTP(MySQL for Visual Studio)。 注意:在Connector / NET之前为Visual Studio安装MySQL。

  3. 安装“Connector / NET”v6.9.10(Connector/Net)。 https://i.stack.imgur.com/XOT1I.jpg注意:我首先尝试使用Connector / NET v6.8,v6.10和v8,但它们都不能与Visual Studio 2017和ADO.Net一起使用。 Here you can find all Connector Versions and Compatibilities with Visual Studio IDEs,但到目前为止这个列表不准确。

  4. 创建新的Visual Studio Professional 2017项目。

  5. 通过NuGet下载并安装“EntityFramework”v6.2.0,转到项目标签/管理NuGet包/浏览 - >实体框架。

  6. 添加对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;右键单击Solution Explorer中的References并选择Add Reference / Browse - > Browse按钮。

  7. 在实体框架提供程序下的App.config中添加MySQL EF6提供程序信息,如下所示:

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

    1. 转到Build选项卡/ Rebuild ProjectName重建项目。
    2. 就是这样。 VS2017准备好了。希望这对所有人都有效,就像今天对我一样。

      <强>参考

      1. Can't Create Entity Data Model - using MySql and EF6

      2. No Entity Framework provider found for 'MySql.Data.MySqlClient' ADO.NET provider

答案 1 :(得分:13)

我通过以下一些步骤解决了这个问题:

  1. 使用以下命令在Package Manager控制台中从Nuget卸载MySql.Data.EntitiesUninstall-Package MySql.Data.Entities

  2. 从MySql连接器安装路径添加项目对最新MySql.Data.Entity.EF6.dll的引用:C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.8\Assemblies\v4.5

答案 2 :(得分:12)

VS 2015仍然有这个bug。 它是由版本不匹配引起的。

在我的系统上,我有MySQL Connector 6.9.6 在NuGet Package Manger控制台中发出命令:

Install-Package MySql.Data.Entity

默认安装版本6.9.8。您的连接器必须与NuGet包的实际版本匹配 您可以从以下位置下载更新版本的连接器: https://www.mysql.com/products/connector/

这里选择&#34; Ado.net驱动程序for MySQL&#34;,并下载相应的版本(在本例中为6.9.8)。 重新打开Visual Studio,现在向导不会崩溃。 无需重启。

答案 3 :(得分:4)

我可以通过执行以下操作来解决此问题:

  1. 打开MySQL安装程序并安装最新版本的Connector / NET
  2. 卸载/重新安装最新版本的MySQL.Data。*软件包,其版本与新安装的Connector / NET软件包的版本相匹配
  3. 重新启动Visual Studios
  4. 重建解决方案

答案 4 :(得分:4)

从其他人的答案中获取有关NuGet版本控制的建议。 我通过删除Nuget安装的.DataData.Entitiy.EF6解决了这个问题。

然后右键点击“参考文献”并浏览:

C:\Program Files (x86)\MySQL\Connector.NET 6.9\Assemblies\v4.5\MySql.Data.dllC:\Program Files (x86)\MySQL\Connector.NET 6.9\Assemblies\v4.5\MySql.Data.Entity.EF6.dll

然后,我可以使用.edmx模型完成ADO.Net向导。

答案 5 :(得分:3)

我知道解决方案。

Nuget安装了MySql.Data。*软件包的边缘版本,而你可能有以前版本的连接器(在我的情况下,软件包是v.6.9.6,连接器是6.9.5)。这就达到了版本不匹配的程度。

请注意,如果您在NuGet中使用 Install-Package MySql.Data.Entities ,您将获得更新版本,如6.8.3,因此您必须添加自己参考,并密切关注你想要添加到解决方案中的那个。

答案 6 :(得分:2)

使用MySQL Connector 6.9.8.0时遇到了同样的问题。虽然我的所有版本都匹配,但仍然失败了。我在MySQL连接器之后安装了新版本的Visual Studio(从2010年到2013年)。对我来说,解决方案是卸载MySQL Connector for .NET,然后重新安装它(完全相同的版本)。然后重新启动Visual Studio。

似乎这是同一问题的另一个版本。

答案 7 :(得分:1)

您可以执行此解决方案:

  1. 添加新的空EF模型。
  2. 在emdx设计工具中,单击并从数据库更新模型。
  3. 选择您的数据库,将生成模型。
  4. 这对我有用:)

答案 8 :(得分:1)

这用于ASP.NET MVC应用程序,该应用程序没有app.config文件。 我不会叙述失败的尝试,但是对我有用的是:-

  • 在VS 运行的情况下,下载并安装“ MySQL for Visual Studio 2.0.5”-撰写本文时为最新版本。
  • 启动VS2017并卸载“ MySql.Data.Entity”和“ MySql.Data” NuGet软件包(如果有) 它们先前已安装在VS2017中。
  • 使用上面的链接(撰写本文时为8.0.13版)下载并安装最新的MySql连接器/ NET。
  • 在项目中,添加对Lopez93上文所述的“ MySql.Data.dll”和“ MySql.Data.EntityFramework.dll” dll的引用,N.B。提到的“ MySql.Data.Entity.EF6.dll”在8.0.13中不存在,只有“ MySql.Data.EntityFramework.dll”。
  • 现在编辑web.config文件,并确保该部分中有此行

<提供者invariantName =“ MySql.Data.MySqlClient” type =“ MySql.Data.MySqlClient.MySqlProviderServices,MySql.Data。实体框架”>

  • 删除或注释掉其他任何'

  • 重建项目。

再次尝试使用向导。

这对我来说很有效。

祝你好运!

答案 9 :(得分:0)

尝试另一件事:

---&gt;通过nuget安装entityframework 6.2.0。

---&gt;在您的web.config / app.config文件中验证您拥有System.Data.SqlServerCe.4.0提供程序。如果没有安装,则通过nuget安装,与之前安装的实体框架完全相同(本例中为6.2.0)。

---&gt;然后添加引用:(在本例中来自连接器/ NET版本6.9.10) C:\Program Files (x86)\MySQL\Connector.NET 6.9\Assemblies\v4.5\MySql.Data.dllC:\Program Files (x86)\MySQL\Connector.NET 6.9\Assemblies\v4.5\MySql.Data.Entity.EF6.dll并重建。

---&gt;尝试添加此提供程序: <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />再次重建。

---&gt;最后,尝试使用新连接添加.edmx文件。

这适用于我的情况,我在一台全新的笔记本电脑中安装了VS2017和MySQL,并遇到了同样的问题。

答案 10 :(得分:0)

我从以下位置更改了我的web.config文件:

  

<提供者invariantName =“ MySql.Data.MySqlClient” type =“ MySql.Data.MySqlClient.MySqlProviderServices,MySql.Data.EntityFramework,Version = 8.0.11.0,Culture = neutral,PublicKeyToken = c5687fc88969c44d” />

收件人:

  

答案 11 :(得分:0)

我遇到了从MySql版本6升级到版本8.0.17.0的问题。我为此苦苦挣扎了近两天,尝试所有旧方法,直到遇到this article。 如果您使用的是EF6和8.0版。根据这篇文章的内容:


MySql.Data.Entity 6.10.7与MySql.Data 8.0.11不兼容。

Oracle将v8.x的包重命名为MySql.Data.EntityFramework。您需要卸载MySql.Data.Entity并安装MySql.Data.EntityFramework。


完成这一简单步骤后,数据连接就开始工作,EDMX设计器也开始工作(尽管我必须回到2017 Visual Studio,因为在本文发布之时,VS 2019的Designer工具尚不可用。)< p>

希望这篇新文章对您有所帮助。

答案 12 :(得分:0)

对于EntityFramework 5.0

第1步

https://downloads.mysql.com/archives/c-net/

上安装MySQL Connector / NET 版本6.8.4

https://dev.mysql.com/downloads/windows/visualstudio/

上安装MySQL for Visual Studio

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