FreeSql 支持數據庫讀寫分離,本功能是客戶端的讀寫分離行爲,數據庫服務器該怎麼配置仍然那樣配置,不受本功能影響,爲了方便描術後面講到的【讀寫分離】都是指客戶端的功能支持。html
各類數據庫的讀寫方案不一,數據庫端開啓讀寫分離功能後,讀寫分離的實現大體分爲如下幾種:nginx
一、nginx代理,配置繁瑣且容易出錯;sql
二、中件間,如MyCat;數據庫
三、在client端支持;服務器
FreeSql 實現了第3種方案,支持一個【主庫】多個【從庫】,【從庫】的查詢策略爲隨機方式。ui
若某【從庫】發生故障,將切換到其餘可用【從庫】,若已所有不可用則使用【主庫】查詢。代理
出現故障【從庫】被隔離起來間隔性的檢查可用狀態,以待恢復。code
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(); //強制讀【主庫】