asp mvc ef开发的商城源码_ASP.NET开发实战——(十)ASP.NET MVC 与数据库之MySQL&EF...

3d749dd9774553444531180a68d0de27.png

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

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

●必要组件的安装

●DBContext的创建与应用

必要组件的安装

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

748368a6aa15bb65e054fcf772877119.png

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

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

5852503a58585f6d6e78f5bb2363d028.png

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

48851f7f869e9589dd854e43e0ccc172.png

DBContext的创建与应用

1. 创建一个DBContext:

8759f080781d628cb634c0b4ef9160f4.png

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

225929f611d738bd1ac7159b0cf99cc9.png

使用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:

0849af26ba3c753ffcb8473fd89a13e8.png

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

583aecb14c43c8e7580c92fd49285021.png

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

a5bdbc5c4f9b405edb3344920ecf9d9e.png

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

8b6749a253276bd2be4b58331fb9cd5f.png

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

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

5. 运行程序:

2048073f39985821c2eae084e21eb580.png
91c09e2ad3b68cf4a8c4a28d81b972ab.png

注:运行正常是因为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若所思。

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

a65c7fb971333727ab2a4e6aedfbeaf6.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值