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

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

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

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

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

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

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

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

 

 

 

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

设置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文件

如下图

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

 

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

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

/// 
        /// 自定义仓储
        /// 
        /// 连接字符串
        /// 
        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(id);

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

至此所有配置完成

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

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

你可能感兴趣的:(.netCore,.netcore,sqlserver,数据库)