VS2015+MySql+EF6闪退等填坑总结

背景: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 

  2、http://www.cnblogs.com/mll5644/p/9692160.html

  3、https://stackoverflow.com/questions/28241500/cant-create-entity-data-model-using-mysql-and-ef6/38619052#38619052

发布了17 篇原创文章 · 获赞 4 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ldy/article/details/83145786
今日推荐