日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CYQ.Data V5 MDataTable 专属篇介绍

發(fā)布時(shí)間:2024/4/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CYQ.Data V5 MDataTable 专属篇介绍 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

以前一兩個(gè)月才出一篇,這三天有點(diǎn)變態(tài)地連續(xù)1天1篇(其實(shí)都是上周末兩天寫好的存貨)。

短期應(yīng)該沒有新的和此框架相關(guān)的文章要寫了,這應(yīng)該是最后一篇,大伙且看且珍惜。

前兩篇講數(shù)據(jù)庫讀寫分離和分布式緩存,這篇隆重地介紹一下:MDataTable,畢竟它有很多未公布或隱藏技能,值得一看。

CYQ.Data 核心使用類介紹

常用:

1:操作數(shù)據(jù)庫:MAction、MProc (名稱空間:CYQ.Data)

2:日志操作:Log、SysLogs(名稱空間:CYQ.Data)

3:配置和性能調(diào)試:AppConfig、AppDebug(名稱空間:CYQ.Data)

4:內(nèi)存表體系:MDataTable(MDataRow、MDataCell) (名稱空間:CYQ.Data.Table)

5:Json系:JsonHelper (名稱空間:CYQ.Data.Tool)

6:本地緩存和分布式緩存:CacheManage (名稱空間:CYQ.Data.Cache)

掌握上面幾個(gè)類,基本就掌握了框架的核心了。

不常用:

1:實(shí)體型操作數(shù)據(jù)庫:OrmBase、SimpleOrmBase、DBFast ?(名稱空間:CYQ.Data.Orm)

2:Html/XHtml模板引擎:XHtmlAction、RSS (名稱空間:CYQ.Data.Xml)

3:AOP編程:IAop接口 (名稱空間:CYQ.Data.Aop)

4:數(shù)據(jù)庫結(jié)構(gòu)工具:DBTool (名稱空間:CYQ.Data.Tool)

5:語法糖及UI擴(kuò)展:IField接口、IUIValue接口、RegisterUI (名稱空間:CYQ.Data.Extension)

以上就是整個(gè)框架的所有,全部加起來目前編繹才300K左右,僅有一個(gè)dll,無任何其它直接依賴,但能做的事超出你想象。

?

下面開始介紹MDataTable

1:MDataTable與數(shù)據(jù)庫的關(guān)系

先看一張圖:

和支持的所有數(shù)據(jù)庫打通,這就是MDataTable的強(qiáng)大之處,任何一種數(shù)據(jù)庫的數(shù)據(jù)只要流向MDataTable,都可以自由轉(zhuǎn)到任意一種數(shù)據(jù)庫輸出。

而實(shí)現(xiàn)這一切的方法就是:AcceptChanges (AcceptOp op, string newConn, params object[] jointPrimaryKeys)

深受廣大網(wǎng)友喜愛的DBImport導(dǎo)數(shù)據(jù)庫工具,就是靠它完成的。

2:MDataTable與數(shù)據(jù)類型的關(guān)系

先看一張圖:

MDataTable和主流數(shù)據(jù)類型也打通了,即任意一種數(shù)據(jù),經(jīng)過MDataTable,就可以以任意一種數(shù)據(jù)格式輸出。

而實(shí)現(xiàn)這一切的方法就是:MDataTable.CreateFrom (object data) 和 ToJson()、ToXml()、ToList<T>()。

CreateFrom除了支持這幾種,其它字典型的如:Dictionary、HashTable等實(shí)現(xiàn)IEnumerable接口的都可以往里塞。

如果只有一行數(shù)據(jù),就對應(yīng)MDataRow的LoadFrom方法。

3:MDataTable的隱式轉(zhuǎn)換類型

先看一張圖:

對這種幾種類型,只需要MDataTable dt=xxx;

?

4:MDataTable的屬性和方法

先看一張圖:

靜態(tài)方法只有一個(gè),就是上面提到的:CreateFrom。

圖里漏了一個(gè)方法:獲取某列的集合:List<T> GetColumnItems<T>

5:幾個(gè)新方法的代碼演示

1:行列轉(zhuǎn)換Pivot(string rowName, string colName, string valueName)

原來數(shù)據(jù)是這樣的:

調(diào)用之后數(shù)據(jù)是這樣的:

2:多表關(guān)聯(lián):Join(MDataTable dt, params string[] appendColumns)

先看這一段截自分布式緩存memcache里的代碼:

status有N個(gè)Dictionary,每個(gè)字段轉(zhuǎn)成MDataTable后是這樣的:

每個(gè)表的Key是一樣的,所以通過指定表的Join類為Key,然后把Value改一下名稱即可。

表Join后的結(jié)果是這樣的:

3:動(dòng)態(tài)屬性:DynamicData

既然為動(dòng)態(tài)屬性,說明它很動(dòng):

A:平時(shí)就是一個(gè)屬性,你可以把它當(dāng)臨時(shí)存檔對象。

B:適用于批量事務(wù)時(shí):如果AcceptChanges失敗,DynamicData會存檔Exception異常。

C:通常一個(gè)指AcceptChanges是一個(gè)事務(wù),如果外部也有事務(wù),希望在同一個(gè)事務(wù)時(shí):

看一下ASP.NET Aries里關(guān)于提交用戶權(quán)限的代碼:

using (MAction action = new MAction(TableNames.Sys_RoleAction)){action.BeginTransation();action.Delete("RoleID='" + roleID + "'");dt.DynamicData = action;//傳遞數(shù)據(jù)鏈接dt.SetState(1);result = dt.AcceptChanges(AcceptOp.Insert);if (!result){action.RollBack();}action.EndTransation();} 

可以把MAction或MProc對象傳遞給它,再執(zhí)行事務(wù),如此,就共用了一個(gè)鏈接了,啟到同一個(gè)事務(wù)的作用。

總結(jié)

MDataTable 在此框架中,像一個(gè)關(guān)鍵的路由結(jié)點(diǎn),相當(dāng)重要,輕輕了解,用好它,你的開發(fā)旅程會變的很輕松。

轉(zhuǎn)載于:https://www.cnblogs.com/cyq1162/p/5618048.html

總結(jié)

以上是生活随笔為你收集整理的CYQ.Data V5 MDataTable 专属篇介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。