• ASP.NET没有魔法——ASP.NET MVC 与数据库之MySQL&EF


      之前介绍EF时介绍了provider这个配置项,而且也介绍了在ASP.NET访问MySQL数据仍然是通过ADO.NET,不同的地方仅仅是更换了MySQL的数据提供器,那么在EF中是否也只需更换“提供器”就可以了呢?

      接下来就通过以下两点,看一下Entity Framework是如何连接使用My SQL数据库的:

      ●必要组件的安装
      ●DBContext的创建与应用

    必要组件的安装

    1. 通过Nuget安装Entity Framework组件到BlogRepository.MySQL项目上:

      

    2. 在BlogRepository.MySQL项目中引入MySql.Data.Entity.EF6:

      EF作为主要组件是必须安装的,只不过EF中只包含了SQL Server相关组件不包含MySQL的,所以还需安装并引入MySql.Data.Entity.EF6,安装MySQL组件的方式有两种,一种是安装Connector/NET,然后在引用管理器中找到:

      

      而另一种方式是通过Nuget包管理器安装:

      

    DBContext的创建与应用

      1. 创建一个DBContext:

      

      2. 在DBContext类型上使用MySqlEFConfiguration类型:

      

      使用MySqlEFConfiguration类型是官方建议的,因为该类型中添加了所有与Mysql类型相关的组件,或者在自定义Configuration类型中调用AddDependencyResolver(new MySqlDependencyResolver())方法自行添加,被添加的组件有:

      ● DbProviderFactory -> MySqlClientFactory
      ● IDbConnectionFactory -> MySqlConnectionFactory
      ● MigrationSqlGenerator -> MySqlMigrationSqlGenerator
      ● DbProviderServices -> MySqlProviderServices
      ● IProviderInvariantName -> MySqlProviderInvariantName
      ● IDbProviderFactoryResolver -> MySqlProviderFactoryResolver
      ● IManifestTokenResolver -> MySqlManifestTokenResolver
      ● IDbModelCacheKey -> MySqlModelCacheKeyFactory
      ● IDbExecutionStrategy -> MySqlExecutionStrategy

      当然也可以自定义一个Configuration类型,在文章最前面提到的替换Provider:

      

      以同样的方式将这个自定义类型应用到DbConfigurationType特性中:

      

      

      3. 修改BlogRepository,将使用SQL改为使用EF:

      

      4. 添加MySql的连接字符串:

      

      DbContext类型会自动在配置文件的connectionString节点中查找名称与其类型名称一致的连接字符串并使用。

      注:name与DbContext类型一致并且providerName是MySql.Data.MySqlClient,这与SQL Server不一致,需要特定的程序来解析和使用连接字符串。

      5. 运行程序:

      

      

      注:运行正常是因为DbContext类型中使用了MySqlEFConfiguration类型,该类型位于MySql.Data.Entity.EF6.dll程序集,所以主项目编译的时候也会将该程序集包含进来,而不会出现程序集缺失的情况。

    小结

      本章介绍了如何使用EF来使用MySQL数据库,与SQL Server区别较大的就是需要引入MySQL相关的程序集然后使用MySQL的数据提供器,这样EF就可以用来操作MySQL数据库了,而这个替换的操作是通过在DBContext类型上使用DbConfigurationType特性来实现的。

      通过几篇对ASP.NET访问数据库及EF使用的介绍,可能会发现一些问题就是关于EF的配置:

      ○安装EF组件时就会动态创建配置信息,但是这些配置又可以不用。

      ○可以使用代码的形式(DbConfigurationType特性)来指定配置。

      ○DbContext的连接字符可以通过基类构造方法传入。

      ○DbContext的连接字符串可以读取配置文件中与其类型名称对应的配置。

      对于以上问题将在下一篇文章中统一介绍。

     

    参考:

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

    本文连接:http://www.cnblogs.com/selimsong/p/7655554.html 

    ASP.NET没有魔法——目录

  • 相关阅读:
    C++隐式推导-auto关键词
    git的几种实用操作(合并代码与暂存复原代码)
    CPU的后记,程序员的未来之计
    CPU中的程序是怎么运行起来的
    nginx-日志切割
    Linux里面使用navicat连接MySQL数据显示2002-Can't connect to local MysQL serverthrough socket'/var/lib/mysq/mysql.sock'(13"权限不够")
    Cacti图形中的方框乱码解决办法
    Cacti1.2.14最新版安装和配置(详细版)
    ERROR 1419 (HY000) at line 9: You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
    Linux服务器查看对应网卡的网口
  • 原文地址:https://www.cnblogs.com/selimsong/p/7655554.html
Copyright © 2020-2023  润新知