EF+MVC映射MySQL数据库搭建程序框架总结

以前使用VS都是通过SQLServer数据库映射,不过这个项目需求是MVC+EF+MySQL,在配置过程中出现了很多错误上网查看了很多资料,现在让我来总结一下吧。

一:配置

因为VS和SqlServer都是微软的亲儿子所以在用VS映射SQLserver的时候很方便,但是映射MySQL的时候就没有那么方便了,需要做很多的配置

(1)安装mysql-connector-net和mysql-for-visualstudio  

         因为用EF映射的时候并没有MySQL的映射源所以需要安装mysql-connector-net和mysql-for-visualstudio,需要注意的是这两个软件的版本要一致,否则就会出错。

(2)配置MySQL.Data和MySQL.Data.Entity

        在安装过以上两个软件之后虽然有了映射MySQL的数据源,但是当映射的时候并没有任何反应或者出现闪退的情况,这是因为在相应的决绝方案中没有配置MySQL.Data和MySQL.Data.Entity;配置MySQL.Data和MySQL.Data.Entity方法有多种,一个是在网上下载dll文件,另一种就是在VS自带的NuGet上安装,我就是在NuGet上安装的。安装的时候如果先安装MySQL.Data.Entity相应的MySQL.Data和EntityFromWorkNuGet就会给你自动配置上了。

(3)配置Config文件

当时做项目时在配置Config文件的时候我也出了很多错误,刚开始我只在Config文件中配置了连接数据库的字符串

所以在运行的时候一直出现System.Data.Entity.Core.MetadataException
  HResult=0x80131939
  Message=指定的架构无效。错误: 
Model1.ssdl(2,2) : 错误 0152: 未找到具有固定名称“MySql.Data.MySqlClient”的 ADO.NET 提供程序的实体框架提供程序。请确保在应用程序配置文件的“entityFramework”节中注册了该提供程序。

刚开始的时候我还以为是自己没有引用什么dll文件,但是到了最后感觉把所有的dll都配置了但是还是没有解决问题,因此去找了度娘和CSDN找到了解决方案,因为是映射的MySQL数据库所以需要在Config文件中配置MySQL的相关配置
  <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>

  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.10.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>

这样整个EF+MVC+MySQL,就配置好了。

猜你喜欢

转载自blog.csdn.net/qq_40947563/article/details/84166480