【.Net Core】yisha框架,配置SQL SERVER数据库读写分离,及多库操作

配置数据库主从库(发布订阅配置),参照链接:

SQL Server主从数据库配置过程_auspicious航的博客-CSDN博客_sqlserver主从

示例中使用为事务发布,如需要在不同服务器配置主从库,首先保证两服务器互通,之后再主库服务器中配置发布内容,在从库服务器中配置订阅内容,需注意在从库服务器中配置时,在新建订阅->查找SQL SERVER发布服务器时

弹出的对话框中,服务器名称处需填写目标服务器数据库属性中名称内容,否则会提示应输入服务器名称

 

 

 

 设置好数据库主从库后进行框架内配置

设置appsettings.json文件,添加读取数据库链接字符串和数据库类型(一般以主库为写库,从库为读库)

//在appsettings.json文件SystemConfig节点下添加以下节点(下方为配置单数据库读取,多数据库可添加多组节点)

"DBProviderRead": "SqlServer",
    "DBConnectionStringRead": "Data Source=读取数据库地址;database=读取数据库名称;uid=读取数据库登陆账号;pwd=读取数据库登陆密码;Pooling=true;Max Pool Size=10240;Min Pool Size=150;Connection Lifetime=10",
    "DBCommandTimeoutRead": 180, // 数据库超时时间,单位秒
    "DBBackupRead": "", // 数据库备份路径

对应修改项目下YiSha.Util\YiSha.Util\Model\SystemConfig.cs文件

如下图

 

添加在appsettings.json中添加的节点名称至SystemConfig类中。

在项目下YiSha.Data\YiSha.Data.Repository\RepositoryFactory.cs文件中添加方法

/// <summary>
        /// 自定义仓储
        /// </summary>
        /// <param name="DBConnection">连接字符串</param>
        /// <returns></returns>
        public Repository BaseRepository(string dbType, string DBConnection)
        {
            IDatabase database = null;
            string dbConnectionString = DBConnection;  //第二个数据库链接  多数据库时候用
            switch (dbType)
            {
                case "SqlServer":
                    DbHelper.DbType = DatabaseType.SqlServer;
                    database = new SqlServerDatabase(dbConnectionString);
                    break;
                case "MySql":
                    DbHelper.DbType = DatabaseType.MySql;
                    database = new MySqlDatabase(dbConnectionString);
                    break;
                case "Oracle":
                    DbHelper.DbType = DatabaseType.Oracle;
                    // 支持Oracle或是更多数据库请参考上面SqlServer或是MySql的写法
                    break;
                default:
                    throw new Exception("未找到数据库配置");
            }
            return new Repository(database);
        }


调用示例

//调用示例
var list11 = await this.BaseRepository("MySql", GlobalContext.SystemConfig.DBConnectionString2).FindEntity<UserEntity>(id);

var list22 = await new RepositoryFactory().BaseRepository("SqlServer", GlobalContext.SystemConfig.DBConnectionString1).FindEntity<UserEntity>(id);

至此所有配置完成

使用中调用写库配置对数据库进行写入(主库写入),数据会自动通过事务同步到从库

调用读库配置对数据库进行读取(从库读取)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值