实体框架向导在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,然后从头开始。然后我确保我完成了仅仅需要的过程。
- 使用nuget install MySql.Data 6.9.9和MySql.Data.Entity 6.9.9。没有其他的。
- 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 错误