1.简介

在工作中遇到一个问题。项目有三个数据库(三个数据库表结构一样),用户可以选择使用哪个数据库。其实就是动态切换数据库连接。

2.EntityFramework For Mysql

先来简单的介绍下mysql使用EntityFramework来操作数据库。
直接上代码:

(1).先建个项目,安装mysql,entityframework相关包

EntityFramework For Mysql 动态切换数据源

(2).建立实体和对应的数据库表

EntityFramework For Mysql 动态切换数据源
EntityFramework For Mysql 动态切换数据源
EntityFramework For Mysql 动态切换数据源

(3).编写数据库连接字符串,编写context实体

EntityFramework For Mysql 动态切换数据源
EntityFramework For Mysql 动态切换数据源
这样就可以来使用Entityframework来访问mysql数据了。

(4).简单测试

EntityFramework For Mysql 动态切换数据源
EntityFramework For Mysql 动态切换数据源
EntityFramework For Mysql 动态切换数据源

3.动态切换数据库

(1).在建一个blog1数据库,表如blog数据库。

EntityFramework For Mysql 动态切换数据源

(2).对context进行改造

EntityFramework For Mysql 动态切换数据源

(3).改造测试

EntityFramework For Mysql 动态切换数据源

EntityFramework For Mysql 动态切换数据源

EntityFramework For Mysql 动态切换数据源

EntityFramework For Mysql 动态切换数据源

4.为什么可以直接传链接字符串

从DbContext构造函数的方法签名可以看出端倪。
EntityFramework For Mysql 动态切换数据源
可以看出我们传数据库连接字符串名字和直接传数据库连接字符串都是可以的。EntityFramework会去做判断,如果是name,再去配置文件取数据库连接字符串和providerName。如果是数据库连接字符串则直接拿来用。

5.遇到的坑

其实EntityFramework对mysql的支持并不是很好,还有些bug。我在进行以上实验的时候遇到了一个问题。当我直接将数据库连接字符串的传到父类的构造函数时,报了: Keyword not supported:'port'错误。经过一番查找,最终找到三个方案:https://stackoverflow.com/questions/45217166/c-sharp-entity-framework-keyword-not-supported-port。
遇到坑的童鞋们可以去看下。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-12-22
  • 2021-10-12
  • 2021-11-19
  • 2021-07-10
  • 2021-04-06
猜你喜欢
  • 2022-03-05
  • 2021-08-25
  • 2021-12-01
  • 2022-02-08
  • 2022-12-23
相关资源
相似解决方案