之前介绍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的连接字符串可以读取配置文件中与其类型名称对应的配置。

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

欢迎添加个人微信号:Like若所思。

欢迎关注我的公众号,不仅为你推荐最新的博文,还有更多惊喜和资源在等着你!一起学习共同进步!

ASP.NET开发实战——(十)ASP.NET MVC 与数据库之MySQL&EF的更多相关文章

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

    本章将介绍如何通过Entity Framework来使用My SQL,之前介绍EF时介绍了provider这个配置项,而且也介绍了在ASP.NET访问MySQL数据仍然是通过ADO.NET,不同的地方 ...

  2. ASP.NET开发实战——(九)ASP.NET MVC 与数据库之ORM

    之前的文章中介绍了如何在ASP.NET中通过ADO.NET操作SQL Server和My SQL数据库,数据库的操作是通过SQL语句的执行来完成的,在ASP.NET中还有一个简便的方式来使用数据库,那 ...

  3. ASP.NET开发实战——(八)ASP.NET MVC 与数据库之MySQL

    之前介绍了My Blog如何使用ADO.NET来访问SQL Server获取数据.本章将介绍如何使用My SQL来完成数据管理. 在使用My SQL之前需确保开发环境中安装了My SQL数据库和Con ...

  4. ASP.NET开发实战——(二)为什么使用ASP.NET

    本文主要内容是通过分析<博客系统>需求,确定使用Web应用的形式来开发,然后介绍了HTML.HTTP的概念,并使用IIS搭建了一个静态的HTML“页面”,从而引出“动态”的ASP.NET. ...

  5. ASP.NET没有魔法——ASP.NET MVC 与数据库之MySQL

    之前介绍了My Blog如何使用ADO.NET来访问SQL Server获取数据.本章将介绍如何使用My SQL来完成数据管理. 在使用My SQL之前需确保开发环境中安装了My SQL数据库和Con ...

  6. ASP.NET开发实战——(十二)ASP.NET MVC 与数据库之Entity Framework Migrations

    在开发数据库应用程序的时候,经常会遇到某些表需要添加字段或者修改类型.新增表等需求,而对于EF Code First来说关注的只有实体类,当需求变更时只需要添加新的实体类或者在实体类中添加.删除.修改 ...

  7. ASP.NET开发实战——(五)ASP.NET MVC & 分层

    上一篇文章简要说明了MVC所代表的含义并提供了详细的项目及其控制器.视图等内容的创建步骤,最终完成了一个简单ASP.NET MVC程序. 注:MVC与ASP.NET MVC不相等,MVC是一种开发模式 ...

  8. ASP.NET开发实战——(六)ASP.NET MVC & 分层 代码篇

    上一篇文章对如何规范使用ASP.NET进行了介绍,本章内容将根据上一篇得出的结论来修改博客应用的代码. 代码分层 综合考虑将博客应用代码分为以下几个层次: ○ 模型:代表应用程序中的数据模型,与数据库 ...

  9. ASP.NET开发实战——(四)ASP.NET MVC是如何运行的?它的生命周期是什么?

    前面的文章我们使用ASP.NET MVC创建了个博客应用,那么它是如何工作的呢?我们都知道ASP.NET的程序需要部署到IIS上才能够通过浏览器来访问,那么IIS与ASP.NET MVC程序之间又是如 ...

随机推荐

  1. js如何手写一个new

    手写new 看一下正常使用new function Dog(name){ this.name = name } Dog.prototype.sayName = function(){ console. ...

  2. MYSQL ERROR:1130 解决

    MYSQL ERROR:1130 解决   ERROR 1130: Host '127.0.0.7' is not allowed to connect to this MySQL server 解决 ...

  3. python3的ExecJS安装使用

    参考官方文档安装 pip3 install PyExecJS 代码编写 import execjs ctx = execjs.compile(""" function a ...

  4. 1+x 证书 Web 前端开发中级理论考试(试卷 7 ) 答案

    1+x 证书 Web 前端开发中级理论考试(试卷 7 ) 答案 转载请注明来源:妙笔生花个人博客http://blog.zh66.club/index.php/archives/438/ 官方QQ群 ...

  5. 曾Python培训讲师-2年Python开发无包装简历-20191217-可公开

    目录 个人介绍 技能介绍 项目经历 自我评价 简历非完整版,需要完整版看下述信息,禁止任何一切私人用途.转发 我生日是27号,那就27元一份,有需求的来购买!只会涨价不会降价,大概卖10份涨1元:曾P ...

  6. 『嗨威说』算法设计与分析 - 回溯法思想小结(USACO-cha1-sec1.5 Checker Challenge 八皇后升级版)

    本文索引目录: 一.回溯算法的基本思想以及个人理解 二.“子集和”问题的解空间结构和约束函数 三.一道经典回溯法题点拨升华回溯法思想 四.结对编程情况 一.回溯算法的基本思想以及个人理解: 1.1 基 ...

  7. C++值类别, move, perfect forward

    推荐看链接顺序看,第一个链接很好地讲述了值类别地特性,图形很好理解.第二个链接介绍常见值类别的示例,帮助熟悉.第三个链接是第二个链接的补充,让你理解为什么需要std::move以及perfect fo ...

  8. 依赖注入在 dotnet core 中实现与使用:3 使用 Lazy<T> 延迟实例化

    有些对象我们并不想一开始就实例化,由于性能或者功能的考虑,希望等到使用的时候再实例化.考虑存在一个类 A, 它使用了依赖的类 B,在 A 中,只有某些不常用到的方法会涉及调用 B 中的方法,多数情况下 ...

  9. JQuery操作attr、prop、val()/text()/html()、class属性

    1.1 arr操作   设置单个属性 // 第一个参数:需要设置的属性名 // 第二个参数:对应的属性值 // $obj.attr(name, value); // 用法举例. $('img').at ...

  10. 区块链社交APP协议分析:BeeChat

    - BeeChat是什么 - BeeChat报文情况 BeeChat使用过程中产生的报文如下: 可以看到,其使用443端口,但内容并非SSL承载,格式不符合SSL,内容中含MsgNtf等明文串,但大部 ...