ASP.NET没有魔法——ASP.NET MVC 与数据库之MySQL&EF
本章将介绍如何通过Entity Framework来使用My SQL,之前介绍EF时介绍了provider这个配置项,而且也介绍了在ASP.NET访问MySQL数据仍然是通过ADO.NET,不同的地方仅仅是更换了MySQL的数据提供器,那么在EF中是否也只需更换“提供器”就可以了呢?接下来就看一下Entity Framework是如何连接使用My SQL数据库的。
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包管理器安装:

3. 创建一个DBContext:

4. 在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特性中:

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

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

DbContext类型会自动在配置文件的connectionString节点中查找名称与其类型名称一致的连接字符串并使用。
注:name与DbContext类型一致并且providerName是MySql.Data.MySqlClient,这与SQL Server不一致,需要特定的程序来解析和使用连接字符串。
6. 运行程序:


注:运行正常是因为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没有魔法——ASP.NET MVC 与数据库之MySQL&EF的更多相关文章
- ASP.NET开发实战——(十)ASP.NET MVC 与数据库之MySQL&EF
之前介绍EF时介绍了provider这个配置项,而且也介绍了在ASP.NET访问MySQL数据仍然是通过ADO.NET,不同的地方仅仅是更换了MySQL的数据提供器,那么在EF中是否也只需更换“提供器 ...
- ASP.NET没有魔法——ASP.NET MVC 与数据库大集合
ASP.NET没有魔法——ASP.NET与数据库 ASP.NET没有魔法——ASP.NET MVC 与数据库之MySQL ASP.NET没有魔法——ASP.NET MVC 与数据库之ORM ASP.N ...
- ASP.NET没有魔法——ASP.NET MVC IoC
之前的文章介绍了MVC如何通过ControllerFactory及ControllerActivator创建Controller,而Controller又是如何通过ControllerBase这个模板 ...
- ASP.NET没有魔法——ASP.NET MVC 过滤器(Filter)
上一篇文章介绍了使用Authorize特性实现了ASP.NET MVC中针对Controller或者Action的授权功能,实际上这个特性是MVC功能的一部分,被称为过滤器(Filter),它是一种面 ...
- ASP.NET没有魔法——ASP.NET MVC使用Oauth2.0实现身份验证
随着软件的不断发展,出现了更多的身份验证使用场景,除了典型的服务器与客户端之间的身份验证外还有,如服务与服务之间的(如微服务架构).服务器与多种客户端的(如PC.移动.Web等),甚至还有需要以服务的 ...
- ASP.NET没有魔法——ASP.NET MVC 路由的匹配与处理
ASP.NET MVC的路由是MVC应用的一个核心也是MVC应用处理的入口,作为一个开发者,在正常情况下仅仅需要做的就是根据需求去定义实体.业务逻辑,然后在MVC的Controller中去调用.Vie ...
- ASP.NET没有魔法——ASP.NET MVC 模型绑定解析(下篇)
上一篇<ASP.NET没有魔法——ASP.NET MVC 模型绑定解析(上篇)>文章介绍了ASP.NET MVC模型绑定的相关组件和概念,本章将介绍Controller在执行时是如何通过这 ...
- ASP.NET没有魔法——ASP.NET MVC Razor与View渲染
对于Web应用来说,它的界面是由浏览器根据HTML代码及其引用的相关资源进行渲染后展示给用户的结果,换句话说Web应用的界面呈现工作是由浏览器完成的,Web应用的原理是通过Http协议从服务器上获取到 ...
- ASP.NET没有魔法——ASP.NET MVC Razor与View渲染 ASP.NET没有魔法——ASP.NET MVC界面美化及使用Bundle完成静态资源管理
ASP.NET没有魔法——ASP.NET MVC Razor与View渲染 对于Web应用来说,它的界面是由浏览器根据HTML代码及其引用的相关资源进行渲染后展示给用户的结果,换句话说Web应用的 ...
随机推荐
- MQ、JMS以及ActiveMQ 关系的理解
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt127 Best-text mb-10代码 ms 的一个标准或者说是一个协议. ...
- 第3阶段——内核启动分析之start_kernel初始化函数(5)
内核启动分析之start_kernel初始化函数(init/main.c) stext函数启动内核后,就开始进入start_kernel初始化各个函数, 下面只是浅尝辄止的描述一下函数的功能,很多函数 ...
- 在数组a中,a[i]+a[j]=a[k],求a[k]的最大值,a[k]max——猎八哥fly
在数组a中,a[i]+a[j]=a[k],求a[k]的最大值,a[k]max. 思路:将a中的数组两两相加,组成一个新的数组.并将新的数组和a数组进行sort排序.然后将a数组从大到小与新数组比较,如 ...
- 201521123007《Java程序设计》第8周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 本次作业题集集合 1. List中指定元素的删除(题目4-1) private static ...
- 201521123008《Java程序设计》第二周实验总结
本周学习总结 ① 数据类型,其中char是占用两个字节的内存空间,其他和以前学过的一样.除了十进制位,整型也可以用八进制或者十六进制表示.浮点型不精确. ②运算符,算术,赋值,逻辑,位运算. ③str ...
- Linux如何设置dns
首先打开dns设置文档 空的dns文档如图所示 键入图片中的文本保存即可设置了自己的dns 保存后推出即可.
- 201521123005《Java程序设计》第十三周学习总结
1. 本周学习总结 1.网络基本概念 2.网络常用命令 ipconfig 查看网络配置信息,如ip地址 ping 测试网络是否连通 telnet 远程登录 ftp 登陆ftp Fport (xp下)查 ...
- 201521123122 《java程序设计》第十三周学习总结
## 201521123122 <java程序设计>第十三周实验总结 ## 1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1 ...
- 全局光照:光线追踪、路径追踪与GI技术进化编年史
全局光照(Global Illumination,简称 GI), 作为图形学中比较酷的概念之一,是指既考虑场景中来自光源的直接光照,又考虑经过场景中其他物体反射后的间接光照的一种渲染技术. 大家常听到 ...
- jQuery常用语法总结笔记
jQuery 1.入口函数 1 $(document).ready(function(){}); 2 $(function(){}); jQuery入口函数与js入 ...