国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - .NET Core實現分表分庫、讀寫分離的通用 Repository功能

.NET Core實現分表分庫、讀寫分離的通用 Repository功能

2020-06-10 14:35dotnetGen ASP.NET教程

這篇文章主要介紹了.NETCore 下支持分表分庫、讀寫分離的通用 Repository,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

首先聲明這篇文章不是標題黨,我說的這個類庫是 FreeSql.Repository,它作為擴展庫現實了通用倉儲層功能,接口規范參考 abp vnext 定義,實現了基礎的倉儲層(CURD)。

安裝

dotnet add package FreeSql.Repository

可用于:.net framework 4.6+、.net core 2.1+

定義
?
1
2
3
4
5
var fsql = new FreeSql.FreeSqlBuilder()
 .UseConnectionString(FreeSql.DataType.Sqlite, @"Data Source=|DataDirectory|\document.db;Pooling=true;Max Pool Size=10")
 .UseLogger(loggerFactory.CreateLogger<IFreeSql>())
 .UseAutoSyncStructure(true) //自動遷移實體的結構到數據庫
 .Build();

過濾與驗證

假設我們有User(用戶)、Topic(主題)兩個實體,在某領域類中定義了兩個倉儲:

?
1
2
var userRepository = fsql.GetGuidRepository<User>();
var topicRepository = fsql.GetGuidRepository<Topic>();

開發過程中,我總會擔心 topicRepository 的數據安全問題,即有可能查詢或操作到其他用戶的主題。因此在v0.0.7版本進行了改進,增加了 filter lambad 表達式參數。

?
1
2
var userRepository = fsql.GetGuidRepository<User>(a => a.Id == 1);
var topicRepository = fsql.GetGuidRepository<Topic>(a => a.UserId == 1);
  • 在查詢/修改/刪除時附加此條件,從而達到不會修改其他用戶的數據;
  • 在添加時,使用表達式驗證數據的合法性,若不合法則拋出異常;

有朋友說這個功能像 abp 的租戶,但這是更小單位的過濾+驗證,確保數據安全。
有朋友說這個功能省事,但我覺得是省心。

分表與分庫

GuidRepository 作為分存式倉儲將實現了分表與分庫(不支持跨服務器分庫)的封裝類。

?
1
var logRepository = fsql.GetGuidRepository<Log>(null, oldname => $"{oldname}_{DateTime.Now.ToString("YYYYMM")}");

上面我們得到一個日志倉儲實例按年月分表,使用它 CURD 最終會操作 Log_201903 表。

注意:雖然 FreeSql 支持 CodeFirst 遷移,但不提供遷移分表,開發環境中仍然可以遷移 Log 表。

讀寫分離

FreeSql 支持數據庫讀寫分離,本功能是客戶端的讀寫分離行為,數據庫服務器該怎么配置仍然那樣配置,不受本功能影響,為了方便描術后面講到的【讀寫分離】都是指客戶端的功能支持。

各種數據庫的讀寫方案不一,數據庫端開啟讀寫分離功能后,讀寫分離的實現大致分為以下幾種:

1、nginx代理,配置繁瑣且容易出錯;

2、中件間,如MySql可以使用MyCat,但是其他數據庫怎么辦?

3、在client端支持;

FreeSql 實現了第3種方案,支持一個【主庫】多個【從庫】,【從庫】的查詢策略為隨機方式。

若某【從庫】發生故障,將切換到其他可用【從庫】,若已全部不可用則使用【主庫】查詢。

出現故障【從庫】被隔離起來間隔性的檢查可用狀態,以待恢復。以 mysql 為例:

?
1
2
3
4
5
6
7
8
9
10
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(); //強制讀【主庫】
其他特性
  • [x] 支持 CodeFirst 遷移;
  • [x] 支持 DbFirst 從數據庫導入實體類,支持三種模板生成器;
  • [x] 采用 ExpressionTree 高性能讀取數據;
  • [x] 支持深入的類型映射,比如pgsql的數組類型;
  • [x] 支持豐富的表達式函數;
  • [x] 支持導航屬性查詢,和延時加載;
  • [x] 支持同步/異步數據庫操作方法,豐富多彩的鏈式查詢方法;
  • [x] 支持讀寫分離、分表分庫;
  • [x] 支持多種數據庫,MySql/SqlServer/PostgreSQL/Oracle/Sqlite;
結束語

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。

原文鏈接:https://www.cnblogs.com/kellynic/p/10480333.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 天堂伊人网 | 成人看片在线 | 精品在线一区 | 国产精品视频久久 | 国产精品美女久久久久aⅴ国产馆 | 日日操操 | 成人爽a毛片一区二区免费 久久久久亚洲精品 | 亚洲三级不卡 | 中文字幕高清在线观看 | av免费观看网站 | 日韩一区二区三区电影在线观看 | 玖玖爱视频在线 | 午夜av网站 | 一区二区三区精品 | 日本网站在线免费观看 | 国产成人久久精品一区二区三区 | 99精品免费视频 | 亚洲伦理 | 99国产精品99久久久久久 | 日韩在线视频资源 | 免费在线观看一区二区 | 九九国产 | 91 在线观看 | 一级免费视频 | 九一精品国产 | 日韩在线观看中文字幕 | 精品欧美一区二区三区久久久 | 亚洲国产高清在线播放 | 久草视频在线观 | 日韩成人在线观看视频 | 日本在线观看一区二区 | 黄色高清网站 | 黄色一级免费大片 | 国产成人免费在线 | 91在线亚洲 | 国产精品爱久久久久久久 | 精品久久一区 | 三级视频网站 | 91精品国产综合久久久久久丝袜 | 在线观看一区 | 午夜在线小视频 |