FreeSql 支持數據庫讀寫分離,本功能是客戶端的讀寫分離行為,數據庫服務器該怎么配置仍然那樣配置,不受本功能影響,為了方便描術后面講到的【讀寫分離】都是指客戶端的功能支持。
各種數據庫的讀寫方案不一,數據庫端開啟讀寫分離功能后,讀寫分離的實現大致分為以下幾種:
1、nginx代理,配置繁瑣且容易出錯;
2、中件間,如MyCat;
3、在client端支持;
FreeSql 實現了第3種方案,支持一個【主庫】多個【從庫】,【從庫】的查詢策略為隨機方式。
若某【從庫】發生故障,將切換到其他可用【從庫】,若已全部不可用則使用【主庫】查詢。
出現故障【從庫】被隔離起來間隔性的檢查可用狀態,以待恢復。
var connstr = "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;" + "Initial Catalog=cccddd;Charset=utf8;SslMode=none;Max pool size=10";IFreeSql fsql = new FreeSql.FreeSqlBuilder().UseConnectionString(FreeSql.DataType.MySql, connstr).UseSlave("connectionString1", "connectionString2") //使用從數據庫,支持多個.Build();select.Where(a => a.Id == 1).ToOne(); //讀【從庫】(默認)
select.Master().WhereId(a => a.Id == 1).ToOne(); //強制讀【主庫】
系列文章導航
(一)入門
(二)自動遷移實體
(三)實體特性
(四)實體特性 Fluent Api
(五)插入數據
(六)批量插入數據
(七)插入數據時忽略列
(八)插入數據時指定列
(九)刪除數據
(十)更新數據
(十一)更新數據 Where
(十二)更新數據時指定列
(十三)更新數據時忽略列
(十四)批量更新數據
(十五)查詢數據
(十六)分頁查詢
(十七)聯表查詢
(十八)導航屬性
(十九)多表查詢
(二十)多表查詢 WhereCascade
(二十一)查詢返回數據
(二十二)Dto 映射查詢
(二十三)分組、聚合
(二十四)Linq To Sql 語法使用介紹
(二十五)延時加載
(二十六)貪婪加載 Include、IncludeMany、Dto、ToList
(二十七)將已寫好的 SQL 語句,與實體類映射進行二次查詢
(二十八)事務
(二十九)Lambda 表達式
(三十)讀寫分離
(三十一)分區分表
(三十二)Aop
(三十三)CodeFirst 類型映射
(三十四)CodeFirst 遷移說明
(三十五)CodeFirst 自定義特性