Skip to content

support muti db

ansonzhang edited this page Dec 23, 2019 · 2 revisions

多个数据库连接

注意这个不是读写分离,是项目中,可以同时连接多个数据库。

1、开启多库操作阀门为true

// 在appsettings.json中配置

"MutiDBEnabled": true

2、配置多个连接字符串

// 在appsettings.json中配置
// 如果要启用那个,就必须开启对应链接的阀门Enabled为true,
// 同时必须要配置不同的连接ID —— ConnId
// 注意♥,多个数据库必须都存在,如果不存在肯定连不上。

  "DBS": [
    /*
      MySql = 0,
      SqlServer = 1,
      Sqlite = 2,
      Oracle = 3,
      PostgreSQL = 4
    */
    {
      "ConnId": "WMBLOG_SQLITE",
      "DBType": 2,
      "Enabled": true,
      "Connection": "WMBlog.db" //只写数据库名就行,我会拼接字符串
    },
    {
      "ConnId": "WMBLOG_MSSQL",
      "DBType": 1,
      "Enabled": true,
      "Connection": "Server=.;Database=WMBlogDB;User ID=sa;Password=123;",
      "ProviderName": "System.Data.SqlClient"
    },
    {
      "ConnId": "WMBLOG_MYSQL",
      "DBType": 0,
      "Enabled": true,
      "Connection": "Server=localhost; Port=3306;Stmt=; Database=wmblogdb; Uid=root; Pwd=456;"
    },
    {
      "ConnId": "WMBLOG_ORACLE",
      "DBType": 3,
      "Enabled": false,
      "Connection": "Provider=OraOLEDB.Oracle; Data Source=WMBlogDB; User Id=sss; Password=789;",
      "OracleConnection_other1": "User ID=sss;Password=789;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.8.65)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME = orcl)))"
    }
  ],

3、配置主数据库ID

//在appsettings.json中配置主数据库连接ID

"MainDB": "WMBLOG_SQLITE",//当前项目的主库,连接字符串的Enabled必须为true

4、配置实体Model特性,对应的数据库连接Id

// 第一个参数是表名,第二个参数是对应的appsettings.json中的连接id // 如果这个特性不写,默认的就是主数据库

    [SugarTable("PasswordLib", "WMBLOG_MSSQL")]
    public class PasswordLib
    {
        [SugarColumn(IsNullable = false, IsPrimaryKey = true, IsIdentity = true)]
        public int PLID { get; set; }
        
        // more...

    }