EntityFramework For Mysql 动态切换数据源

1.简介

在工做中遇到一个问题。项目有三个数据库(三个数据库表结构同样),用户能够选择使用哪一个数据库。其实就是动态切换数据库链接。mysql

2.EntityFramework For Mysql

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

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

nuget安装

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

人员实体
文章实体
建表语句

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

数据库链接字符串
context实体类
这样就能够来使用Entityframework来访问mysql数据了。数据库

(4).简单测试

测试代码
person测试结果
article测试结果

3.动态切换数据库

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

两个数据库

(2).对context进行改造

context改造后

(3).改造测试

测试blog1

blog1表

blog

blog表

4.为何能够直接传连接字符串

从DbContext构造函数的方法签名能够看出端倪。
DbContext构造函数
能够看出咱们传数据库链接字符串名字和直接传数据库链接字符串都是能够的。EntityFramework会去作判断,若是是name,再去配置文件取数据库链接字符串和providerName。若是是数据库链接字符串则直接拿来用。ide

5.遇到的坑

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

相关文章
相关标签/搜索