背景:VS2015+MySql+EF6(DB First)
踩坑顺序:之前的操作依次如下:
1,安装 MySQL Connector/NET(不用想,装最新的,8.0.12)
2.安装 MySQL for Visual Studio (不用想,装最新的,最新1.2.8)
3.在VS2015创建WEB项目
4.nuget 安装MySql.Data.Entity (最新6.10.8,会自动安装依赖包MySql.Data 6.10.8 和 EF 6.2.0)
一个坑:接下来,创建【ADO.NET实体数据模型】:
坑来了,点【下一步】,闪退,晕!
问题解决:查了好多说法,花了无数时间,发现最重要的是要保持驱动版本一致问题,总结各部件正确的版本是:
1,安装 MySQL Connector/NET 6.10.8 (和后面的MySql.Data.Entity版本要一致)
2.安装 MySQL for Visual Studio 1.2.8(这个版本关系不大。其与VS的兼容性可参考:https://dev.mysql.com/doc/connector-net/en/connector-net-versions.html)
3.项目nuget 安装MySql.Data.Entity (最新6.10.8,会自动安装依赖包MySql.Data 6.10.8 和 EF 6.2.0)
***问题解决了,不会闪退了
要点:
1、MySQL Connector/NET 、MySql.Data、MySql.Data.Entity 这三个部件版本要一致(截止2018-10-18各部件最新统一版本是6.10.8)
2、不要给MySql.Data升级(不要见到新版本就激动...最新是8.0.12)
注意事项:
1、MySql.Data 6.10.8支持的.net framwork版本是4.5.2。所以编译选项要选择为4.5.2,否则可能会有警告信息。
2、MySQL Connector/NET当前最新是8.0.12,可到https://dev.mysql.com/downloads/connector/net/6.9.html 下载6.10.8版本。
第二个坑:您的项目引用了最新实体框架;但是,找不到数据链接所需的与版本兼容的实体框架数据库 提供程序。
问题解决:在保证上面的前提下,检查webconfig配置文件。我因为在解决问题的过程中,尝试了不通的Mysql.Data版本,导致webconfig文件中的版本与实际使用的6.10.8不一致。
1,runtime配置节
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.10.8.0" newVersion="6.10.8.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
2.entityFramework配置节
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.10.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</providers>
</entityFramework>
3.system.data配置节
<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.10.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
***问题解决了,不会出现版本不兼容提示了
参考文章:
1、https://cloud.tencent.com/developer/ask/180113