配置数据库主从库(发布订阅配置),参照链接:
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);
至此所有配置完成
使用中调用写库配置对数据库进行写入(主库写入),数据会自动通过事务同步到从库
调用读库配置对数据库进行读取(从库读取)