mysql 动态切换数据源_EntityFramework For Mysql 动态切换数据源

1.简介

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

2.EntityFramework For Mysql

先来简单的介绍下mysql使用EntityFramework来操作数据库。

直接上代码:

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

3ab06e6420b1

nuget安装

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

3ab06e6420b1

人员实体

3ab06e6420b1

文章实体

3ab06e6420b1

见表语句

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

3ab06e6420b1

数据库连接字符串

3ab06e6420b1

context实体类

这样就可以来使用Entityframeorok来访问mysql数据了。

(4).简单测试

3ab06e6420b1

测试代码

3ab06e6420b1

person测试结果

3ab06e6420b1

article测试结果

3.动态切换数据库

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

3ab06e6420b1

两个数据库

(2).对context进行改造

3ab06e6420b1

context改造后

(3).改造测试

3ab06e6420b1

测试blog1

3ab06e6420b1

blog1表

3ab06e6420b1

blog

3ab06e6420b1

blog表

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

从DbContext构造函数的方法签名可以看出端倪。

3ab06e6420b1

DbContext构造函数

可以看出我们传数据库连接字符串名字和直接传数据库连接字符串都是可以的。EntityFramework会去做判断,如果是name,再去配置文件取数据库连接字符串和providerName。如果是数据库连接字符串则直接拿来用。

5.遇到的坑

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

遇到坑的童鞋们可以去看下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值