[NewLife.XCode]实体工厂(拦截处理实体操作)
NewLife.XCode是一個有10多年歷史的開源數(shù)據(jù)中間件,支持nfx/netcore,由新生命團隊(2002~2019)開發(fā)完成并維護至今,以下簡稱XCode。
整個系列教程會大量結(jié)合示例代碼和運行日志來進行深入分析,蘊含多年開發(fā)經(jīng)驗于其中,代表作有百億級大數(shù)據(jù)實時計算項目。
開源地址:https://github.com/NewLifeX/X?(求star, 795+)
?
如果說前面16篇講的都是XCode的ORM功能,從這一篇開始,將超越ORM之外,從另一個角度講解一個數(shù)據(jù)中間件!
回到目錄
實體接口
有心的同學可以發(fā)現(xiàn),每一個實體類都有實現(xiàn)一個IEntity接口,這就是實體接口。
實體接口IEntity,抽象實體對象的添刪改存操作,支持訪問臟數(shù)據(jù)和擴展屬性!
?
日復(fù)一日的寫添刪改查,上進的同學會想,能不能把許多類似的操作給封裝為通用函數(shù)?
這是對IEntity接口的擴展方法,新增時設(shè)置CreateTime,每次設(shè)置UpdateTime,然后Save保存。
IEntity支持通過名稱讀寫字段屬性(《臟數(shù)據(jù)》中有提到實體屬性賦值的三種方法),支持臟數(shù)據(jù)和添刪改,可以無需反射而實現(xiàn)各種封裝。
IEntity主要構(gòu)成:
添刪改存。Insert/Update/Delete/Save/SaveAsync
取值賦值。this[name]/SetItem/CloneEntity/CopyFrom
臟數(shù)據(jù)。Dirtys/HasDirty/IsDirty(name)
擴展屬性。Extends
?
回到目錄
實體工廠
實體工廠接口IEntityOperate,抽象提供實體類的元數(shù)據(jù)、查詢、事務(wù)、設(shè)置!
實體類的各種元數(shù)據(jù)一般可以通過內(nèi)嵌靜態(tài)類Meta訪問,也可以通過實體工廠接口IEntityOperate訪問,以便于設(shè)計各種靈活功能。?
實體工廠接口IEntityOperate主要構(gòu)成:
字段屬性信息 Fields/AllFields/FieldNames。最常用,訪問到所有數(shù)據(jù)屬性的信息
數(shù)據(jù)表 Table。提供實體類和數(shù)據(jù)表相關(guān)信息
唯一主鍵 Unique。XCode強烈推薦使用唯一主鍵,因為許多特色功能要求有唯一主鍵才能支持
實體會話 Session。提供數(shù)據(jù)庫查詢與執(zhí)行的直接操作
分表分庫 TableName/ConnName。接口訪問跟Meta.TableName/Meta.ConnName一樣,可通過對其賦值改變當前線程下使用的表名和連接名,從而實現(xiàn)分表分庫功能
緩存 Cache/SingleCache/Count。實體緩存、對象緩存、總記錄數(shù)
查詢數(shù)據(jù) Find/FindByKey/FindAll/FindCount
事務(wù) BeginTransaction/Commit/Rollback
?
場景一:從Http請求中讀取數(shù)據(jù)并填充到實體屬性
?
場景二:多個實體類要做修改日志,重載Insert/Update/Delete后調(diào)用以下方法,把實體對象中被修改(IsDirty有臟數(shù)據(jù))的字段和數(shù)值拼成字符串寫入日志表
?
?
?
回到目錄
總結(jié)
XCode是一個開放性的數(shù)據(jù)中間件,為各公司團隊打造自己的開發(fā)平臺提供鼎力支持!
在這十多年的發(fā)展中,幾乎所有使用XCode的公司團隊,都根據(jù)團隊情況和業(yè)務(wù)需要封裝了自己的快速開發(fā)平臺!
?
回到目錄
系列教程
NewLife.XCode教程系列[2019版]
增刪改查入門。快速展現(xiàn)用法,代碼配置連接字符串
數(shù)據(jù)模型文件。建立表格字段和索引,名字以及數(shù)據(jù)類型規(guī)范,推薦字段(時間,用戶,IP)
實體類詳解。數(shù)據(jù)類業(yè)務(wù)類,泛型基類,接口
功能設(shè)置。連接字符串,調(diào)試開關(guān),SQL日志,慢日志,參數(shù)化,執(zhí)行超時。代碼與配置文件設(shè)置,連接字符串局部設(shè)置
反向工程。自動建立數(shù)據(jù)庫數(shù)據(jù)表
數(shù)據(jù)初始化。InitData寫入初始化數(shù)據(jù)
高級增刪改。重載攔截,自增字段,Valid驗證,實體模型(時間,用戶,IP)
臟數(shù)據(jù)。如何產(chǎn)生,怎么利用
增量累加。高并發(fā)統(tǒng)計
事務(wù)處理。單表和多表,不同連接,多種寫法
擴展屬性。多表關(guān)聯(lián),Map映射
高級查詢。復(fù)雜條件,分頁,自定義擴展FieldItem,查總記錄數(shù),查匯總統(tǒng)計
數(shù)據(jù)層緩存。Sql緩存,更新機制
實體緩存。全表整理緩存,更新機制
對象緩存。字典緩存,適用用戶等數(shù)據(jù)較多場景。
百億級性能。字段精煉,索引完備,合理查詢,充分利用緩存
實體工廠。元數(shù)據(jù),通用處理程序
角色權(quán)限。Membership
導(dǎo)入導(dǎo)出。Xml,Json,二進制,網(wǎng)絡(luò)或文件
分表分庫。常見拆分邏輯
高級統(tǒng)計。聚合統(tǒng)計,分組統(tǒng)計
批量寫入。批量插入,批量Upsert,異步保存
實體隊列。寫入級緩存,提升性能。
備份同步。備份數(shù)據(jù),恢復(fù)數(shù)據(jù),同步數(shù)據(jù)
數(shù)據(jù)服務(wù)。提供RPC接口服務(wù),遠程執(zhí)行查詢,例如SQLite網(wǎng)絡(luò)版
大數(shù)據(jù)分析。ETL抽取,調(diào)度計算處理,結(jié)果持久化
?
總結(jié)
以上是生活随笔為你收集整理的[NewLife.XCode]实体工厂(拦截处理实体操作)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET Core 批量重置 Azure
- 下一篇: DDD该怎么学