<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      [NewLife.XCode]高級(jí)增刪改

      NewLife.XCode是一個(gè)有10多年歷史的開(kāi)源數(shù)據(jù)中間件,支持nfx/netstandard,由新生命團(tuán)隊(duì)(2002~2019)開(kāi)發(fā)完成并維護(hù)至今,以下簡(jiǎn)稱XCode。

      整個(gè)系列教程會(huì)大量結(jié)合示例代碼和運(yùn)行日志來(lái)進(jìn)行深入分析,蘊(yùn)含多年開(kāi)發(fā)經(jīng)驗(yàn)于其中,代表作有百億級(jí)大數(shù)據(jù)實(shí)時(shí)計(jì)算項(xiàng)目。

      開(kāi)源地址:https://github.com/NewLifeX/X (求star, 707+)

       

       前文《XCode添刪改》給大家展示了添刪改數(shù)據(jù)的基本概況,本文將詳解添刪改高級(jí)功能。

       

      基本添刪改

      最常用的添刪改操作Insert/Update/Delete,實(shí)際是根據(jù)實(shí)體對(duì)象生成相應(yīng)的SQL語(yǔ)句,由IEntityPersistence接口實(shí)現(xiàn)。

      ** IEntityPersistence在XCode內(nèi)部有一個(gè)默認(rèn)實(shí)現(xiàn),用戶可以自定義后注冊(cè)到對(duì)象容器ObjectContainer中。

       

      Insert 生成標(biāo)準(zhǔn)Insert Into語(yǔ)句,根據(jù)設(shè)置決定是否使用參數(shù)化。(參數(shù)化設(shè)置

      Insert Into User(Name, Password, DisplayName, Sex, Mail, Mobile, Code, Avatar, RoleID, RoleIDs, DepartmentID, Online, Enable, Logins, LastLogin, LastLoginIP, RegisterTime, RegisterIP, Ex1, Ex2, Ex3, Ex4, Ex5, Ex6, UpdateUser, UpdateUserID, UpdateIP, UpdateTime, Remark) Values('張三', 'E10ADC3949BA59ABBE56E057F20F883E', null, 0, null, null, null, null, 0, null, 0, 0, 0, 0, null, null, null, null, 0, 0, 0, null, null, null, null, 0, null, null, null);Select last_insert_rowid() newid

      Insert把所有字段加入到SQL中,即使是沒(méi)有設(shè)置數(shù)值的字段,也給予默認(rèn)值。(自增字段顯然不需要加入)

      生成的Insert Into語(yǔ)句,最后一部分是獲取最近插入的自增ID,因此執(zhí)行Insert以后,user.ID就取得了最新的自增值。

       

      Update 最精彩的部分,莫過(guò)于臟數(shù)據(jù)(后面將有專門(mén)文章介紹)。

      在XCode中,修改數(shù)據(jù)的標(biāo)準(zhǔn)流程是,先查出來(lái),修改屬性后保存。此時(shí)生成的update set語(yǔ)句,只包含修改過(guò)的字段

      Update User Set Mobile='13012345678', Code='abcdef' Where ID=74

      如上,修改了3個(gè)字段,但是Name本來(lái)就是“張三”,因此實(shí)際上只修改了兩個(gè)字段,也就是說(shuō)只有兩個(gè)字段有臟數(shù)據(jù)(數(shù)值改變被弄臟了)。

      最終生成的update set語(yǔ)句,只包含帶有臟數(shù)據(jù)的字段。最后的where部分,則由主鍵組成。

       

      Delete 就簡(jiǎn)單多了,只取了其中的主鍵字段,拼接where部分。 

       

      Delete From User Where ID=74

       

      Save 是一個(gè)包裝操作,它會(huì)根據(jù)主鍵來(lái)判斷調(diào)用Insert或Update。

      1. 如果實(shí)體對(duì)象來(lái)自數(shù)據(jù)庫(kù),Save時(shí)調(diào)用Update;
      2. 自增主鍵,ID=0時(shí)調(diào)用Insert,否則調(diào)用Update;
      3. 非自增主鍵,查詢一次數(shù)據(jù)庫(kù),如果有數(shù)據(jù)則Update,沒(méi)有則Insert,(這樣子顯然很傻)

       

      重載添刪改

      實(shí)體類的添刪改操作都可以重載(Insert/Update/Delete/OnInsert/OnUpdate/OnDelete)

      重載后可以做業(yè)務(wù)代碼判斷,也可以級(jí)聯(lián)更新其它表,還可以記錄添刪改操作日志,甚至還可以做假刪除(重載OnDelete然后實(shí)際執(zhí)行OnUpdate)

      分為兩組重載,實(shí)際執(zhí)行順序是:Insert=>Valid=>EntityModule=>OnInsert

       

      數(shù)據(jù)驗(yàn)證Valid

       每個(gè)實(shí)體類在Insert/Update之前,都需要Valid驗(yàn)證數(shù)據(jù) ,參數(shù)isNew以區(qū)分Insert。

      Valid常常可用于判斷主要字段的有效性,無(wú)效時(shí)強(qiáng)烈推薦拋出參數(shù)類異常,魔方NewLife.Cube表單將可以捕獲并定位。

      除此之外,Valid用得更多的功能是在Insert/Update之前修改完善字段數(shù)據(jù),例如上面對(duì)密碼進(jìn)行MD5散列,以及格式化RoleIDs。

      這里出現(xiàn)新技術(shù),IsDirty和Dirtys,這是XCode的臟數(shù)據(jù),前者判斷Password字段是否有臟數(shù)據(jù)(Password被賦予跟原來(lái)不想等的值),后者清空Password臟數(shù)據(jù)。

      臟數(shù)據(jù)是生成Update語(yǔ)句的核心,不臟的字段不會(huì)出現(xiàn)在update set 之中,實(shí)現(xiàn)部分字段更新,后續(xù)有專門(mén)章節(jié)講解。

       

      實(shí)體過(guò)濾器

      實(shí)體過(guò)濾器EntityModule,用于攔截實(shí)體類的添刪改操作,內(nèi)置最常用的3個(gè)過(guò)濾器UserModule/TimeModule/IPModule

      前面《XCode數(shù)據(jù)模型文件》推薦的8個(gè)常用字段還記得嗎? CreateUser/CreateTime/CreateIP 等,所有CreateAbc將在Insert的時(shí)候攔截賦值,所有UpdateAbc將在Insert和Update的時(shí)候攔截賦值。

      UserModule取當(dāng)前登錄用戶,由ManageProvider驅(qū)動(dòng);

      TimeModule取當(dāng)前時(shí)間;

      IPModule取當(dāng)前訪問(wèn)IP,由ManageProvider.UserHost提供;

       

      系列教程

      NewLife.XCode教程系列[2019版]

      1. 增刪改查入門(mén)。快速展現(xiàn)用法,代碼配置連接字符串
      2. 數(shù)據(jù)模型文件。建立表格字段和索引,名字以及數(shù)據(jù)類型規(guī)范,推薦字段(時(shí)間,用戶,IP)
      3. 實(shí)體類詳解。數(shù)據(jù)類業(yè)務(wù)類,泛型基類,接口
      4. 功能設(shè)置。連接字符串,調(diào)試開(kāi)關(guān),SQL日志,慢日志,參數(shù)化,執(zhí)行超時(shí)。代碼與配置文件設(shè)置,連接字符串局部設(shè)置
      5. 反向工程。自動(dòng)建立數(shù)據(jù)庫(kù)數(shù)據(jù)表
      6. 數(shù)據(jù)初始化。InitData寫(xiě)入初始化數(shù)據(jù)
      7. 高級(jí)增刪改。重載攔截,自增字段,Valid驗(yàn)證,實(shí)體模型(時(shí)間,用戶,IP)
      8. 臟數(shù)據(jù)。如何產(chǎn)生,怎么利用
      9. 增量累加。高并發(fā)統(tǒng)計(jì)
      10. 事務(wù)處理。單表和多表,不同連接,多種寫(xiě)法
      11. 擴(kuò)展屬性。多表關(guān)聯(lián),Map映射
      12. 高級(jí)查詢。復(fù)雜條件,分頁(yè),自定義擴(kuò)展FieldItem,查總記錄數(shù),查匯總統(tǒng)計(jì)
      13. 數(shù)據(jù)層緩存。Sql緩存,更新機(jī)制
      14. 實(shí)體緩存。全表整理緩存,更新機(jī)制
      15. 對(duì)象緩存。字典緩存,適用用戶等數(shù)據(jù)較多場(chǎng)景。
      16. 百億級(jí)性能。字段精煉,索引完備,合理查詢,充分利用緩存
      17. 實(shí)體工廠。元數(shù)據(jù),通用處理程序
      18. 角色權(quán)限。Membership
      19. 導(dǎo)入導(dǎo)出。Xml,Json,二進(jìn)制,網(wǎng)絡(luò)或文件
      20. 分表分庫(kù)。常見(jiàn)拆分邏輯
      21. 高級(jí)統(tǒng)計(jì)。聚合統(tǒng)計(jì),分組統(tǒng)計(jì)
      22. 批量寫(xiě)入。批量插入,批量Upsert,異步保存
      23. 實(shí)體隊(duì)列。寫(xiě)入級(jí)緩存,提升性能。
      24. 備份同步。備份數(shù)據(jù),恢復(fù)數(shù)據(jù),同步數(shù)據(jù)
      25. 數(shù)據(jù)服務(wù)。提供RPC接口服務(wù),遠(yuǎn)程執(zhí)行查詢,例如SQLite網(wǎng)絡(luò)版
      26. 大數(shù)據(jù)分析。ETL抽取,調(diào)度計(jì)算處理,結(jié)果持久化

       

      posted @ 2019-03-18 23:03  大石頭  閱讀(2655)  評(píng)論(5)    收藏  舉報(bào)
      主站蜘蛛池模板: 国产精品永久免费无遮挡| 国产亚洲一区二区三不卡| 波多野结衣网站| 不卡一区二区三区四区视频| 合山市| 欧洲美熟女乱av在免费| 日本中文一二区有码在线| 小伙无套内射老熟女精品| 无码av中文字幕免费放| 一个色综合色综合色综合| 福利一区二区在线视频| 久久精品国产99久久久古代| 中文字幕亚洲综合第一页| 五月婷婷开心中文字幕| 国产精品疯狂输出jk草莓视频| 中文www天堂| 视频一区二区三区在线视频| 亚洲精品在线二区三区| 亚洲国产成人精品福利无码| 国产精品亚洲一区二区z| 人妻少妇中文字幕久久| 在线 欧美 中文 亚洲 精品| 99久久精品费精品国产一区二区| 久久精品国产亚洲av成人| 国产精品免费看久久久| 18禁无遮挡啪啪无码网站破解版| 最新精品露脸国产在线| 欧美成人午夜在线观看视频| 亚洲一区二区三区激情在线| 日本中文字幕在线播放| 亚洲精品尤物av在线网站| 国产一区二区在线观看粉嫩 | av鲁丝一区鲁丝二区鲁丝三区 | 精品人妻人人做人人爽| 久久亚洲日本激情战少妇| 国产精品流白浆无遮挡| 自拍偷在线精品自拍偷免费| 欧美成人精品三级网站视频| 精品无码一区二区三区电影| 渭南市| 成人网站网址导航|