实体框架向导在MySQL上崩溃

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实体框架向导在MySQL上崩溃相关的知识,希望对你有一定的参考价值。

我的问题类似于this one,但崩溃发生在以后。我必须在SQL Server和mysql之间互操作EF数据库优先模型。更具体地说,我的应用程序根据连接字符串和配置设置(DB_TYPE=MYSQL等)向SQL Server或MySQL发出了简单的SQL查询,两个数据库具有相同的结构并保持在一起,因此对一个模式的每个修改都被重新应用于另一个。

现在,我使用SQL Server数据库优先模型为应用程序添加了EF支持。我现在必须让应用程序在MySQL上运行。为了验证旧的开发人员没有在两个DBMS之间留下不对称的东西,我尝试了Update model against database *,这次我在localhost上选择了MySQL连接到我的开发数据库。

在我点击下面的屏幕上的Next后,它将崩溃并返回EDMX编辑器

我需要继续这个项目,我已经坚持了一段时间。

这是我的Web.config片段:

<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v11.0" />
      </parameters>
    </defaultConnectionFactory>
    <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 invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </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.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
  </system.data>

我怎样才能解决我的问题?我为Visual Studio重新安装了MySQL工具,但没有帮助。

*我使用Visual Studio的本地化版本,因此我不知道所有命令的原始英语

答案

我不知道为什么会这样,但我进入了我的NuGet包管理器并删除了MySql.Data.Entity(还检查了删除了MySql.Data的依赖项)。我进入了我的.edmx并运行了“从数据库更新模型......”,一切正常。

(注意:这也删除了我的实体框架,因此我不得不在使用NuGet Manager时添加它)

w ^ ...牛逼... F?

也许别人可以证实这一点......

另一答案

我通过以下步骤解决了这个问题(请注意我使用vs2015和.net 4.5)

1)卸载所有以前的mysql连接器

2)通过NuGet包删除所有mySQL引用

3)下载mysql连接器v6.8.8

4)下载后,转到您的项目并添加新安装的dll文件作为参考(位于安装路径中,通常为C: Program Files(x86) MySQL MySQL Connector Net 6.8.8 Assemblies v4。 5)

5)转到NuGet包并添加MySql.Data(版本6.8)和MySql.Data.Entity(版本6.8)。

6)构建您的解决方案,不再崩溃:)

希望这可以帮助你

另一答案

当你环顾四周时,这似乎是一个普遍的问题。我知道沿着这条路走这条路,但是迟到总比没有好。

我最终删除并重新安装了visual studio 2015和mysql,然后从头开始。然后我确保我完成了仅仅需要的过程。

  1. 使用nuget install MySql.Data 6.9.9和MySql.Data.Entity 6.9.9。没有其他的。
  2. Nuget不会正确更改Web配置,因此您需要更改它,如下所示。

之前

<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
         <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
     </providers>
</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, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
    </providers>
</entityFramework>

这为我修好了。我不确定你是否需要重新安装,但肯定你需要做第2步。

祝好运。

另一答案

我有一个类似的问题。安装'MySql.Data 6.9.9'和'MySql.Data.Entity 6.9.9'Nuget软件包后,向导在该屏幕后崩溃。我附加了一个调试器,发现它是由MySql.Data.Entity.EF6.dll中的空引用异常引起的。

我认为它可能不是软件包,因为我已经尝试重新安装它们,所以我认为它可能是Visual Studio的MySQL安装与MySQL EF6 dll冲突的问题。对我来说,解决方案只是重新安装最新的“MySQL for Visual Studio 1.2.6”:

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

可能是我有一个旧版本(没想到先检查,所以我无法确认)。

另一答案

在我的情况下,原因是安装的mysql连接器的版本与引用的MySQL.Data.Entity的版本不同当我引用相同的版本时,一切都变得正常。

另一答案

我从中更改配置文件

<entityFramework>.....</entityFramework>

<entityFramework codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6">.....</entityFramework>

一切正常

参考:https://dev.mysql.com/doc/connector-net/en/connector-net-entityframework60.html

以上是关于实体框架向导在MySQL上崩溃的主要内容,如果未能解决你的问题,请参考以下文章

Entity Framework 的实体数据向导在连接 MySQL 数据库时崩溃

使用 MySQL 和实体框架 6 StrongTypingException 错误

具有 SQL Server 连接的实体框架 6 尝试使用 MySqlClient 并崩溃

无法将实体框架与 MySQL 一起使用

使用导入向导导入 CSV 时 MYSQL 崩溃

使用实体框架迁移时 SQL Server 连接抛出异常 - 添加代码片段