zoukankan      html  css  js  c++  java
  • EntityFramework For Mysql 动态切换数据源

    1.简介

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

    2.EntityFramework For Mysql

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

    (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。如果是数据库连接字符串则直接拿来用。

    5.遇到的坑

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

  • 相关阅读:
    pycharm基本设置
    pycharm破解
    jupyter
    gpu监控收藏
    监控收藏
    k8s 亲和性和反亲和性 以及污点和容忍
    通过服务器 远程管理卡进行装机
    7.11实习培训日志-Git Linux
    ## HashTable和HashMap的区别
    springboot2 -广播式WebSocket
  • 原文地址:https://www.cnblogs.com/nele/p/7944838.html
Copyright © 2011-2022 走看看