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

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

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

      [NewLife.XCode]反向工程(自動建表建庫大殺器)

      NewLife.XCode是一個有10多年歷史的開源數據中間件,支持nfx/netstandard,由新生命團隊(2002~2019)開發完成并維護至今,以下簡稱XCode。

      整個系列教程會大量結合示例代碼和運行日志來進行深入分析,蘊含多年開發經驗于其中,代表作有百億級大數據實時計算項目。

      開源地址:https://github.com/NewLifeX/X (求star, 656+)

       

      大殺器

      反向工程是XCode的大殺器,區別于其它ORM的最強功能!

      通俗理解:基于XCode開發的應用,無需數據庫安裝腳本,連接字符串指向哪一臺哪一種數據庫,系統就自動在上面建庫建表!

      正式定義:基于實體類的表結構信息,在連接字符串指定的目標數據庫上自動執行建庫建表、添刪改字段、創建索引等操作,支持各種數據庫!

      應用系統首次啟動完成的時候,也是自動建表建庫并初始化完成的時候。

      反向工程是XCode數萬級分表的主要倚仗!

       

      創建控制臺項目,從Nuget引用NewLife.XCode

      創建實體類,模型如下(可參考前面幾章來生成實體類):

       測試代碼:

       執行日志:

      自始至終,我們沒有編寫SQL腳本,沒有去數據庫創建數據表。

      代碼寫完就跑起來,測試通過就部署到正式庫。

      從日志來看,程序自動下載SQLite驅動,因為我們并沒有指定實體類使用哪一種數據庫,XCode自動給我們配置了SQLite。(上一章連接字符串部分有講解)

       

      加一行代碼把數據庫指向MySql:

       執行日志:

      同樣的首先下載MySql驅動,(當然也可以自己通過nuget引用)。

      首次連接數據庫時,庫名指定School報錯,因為根本就不存在這個庫。

      因此,XCode切換到系統庫,開始創建數據庫School,并創建數據表和索引。這里完全是MySql語法,不同于上面的SQLite建表語句。

       

      感興趣的同學,還可以試試Oracle和SqlServer等數據庫。

       

      正向工程

      正向工程就是從數據庫讀取表結構信息,生成模型信息。

      我們來試試寫幾行代碼讀取上面創建的數據表:

      執行日志:

      從上面可以看到,讀取dal.Tables得到了這個連接的所有表結構信息,輸出為Xml時,跟前面用來創建實體類的模型文件極為相似。

      其實這就是一個模型文件,只是為了生成實體類的模型文件多增加了幾個屬性而已。

      新生命碼神工具XCoder,(https://github.com/NewLifeX/XCoder),其中的數據建模工具,可以導出各種數據庫的表結構信息,正是基于dal.Tables來實現。

       

      正向工程由3個基本接口構成:

      • IDataTable。數據表接口,dal.Tables就是IDataTable集合,包括名稱、描述等
      • IDataColumn。數據列接口,每張數據表有多個數據列,包括名稱、類型、長度、描述等
      • IDataIndex。數據索引接口,每張數據表沒有或者有多個索引,索引指定包括哪些字段 ,是否唯一

       

      反向工程

      有了IDataTable,我們就可以主動控制數據表結構。

      DAL.SetTables(IDataTable[] tables);

      這是反向工程高級用法,實際日常工作中用不到,各個實體類加載時,將會逐個連接進行反向工程檢查,正是調用該方法。

       

      給上面的數據模型,增加一個字段Code和對應索引:

      跑起來:

      程序自動為我們添加了字段,以及創建了索引!

      前面的幾個SHOW,就是XCode的正向工程,取得數據庫表結構,然后跟實體類結構對比,不相同時執行反向操作。

       

      反向工程設置

      大家還記得上一章系統設置中提到的Migration嗎?

      XCode.config和連接字符串中都支持這個設置。

      可用設置項如下:

      • Off 關閉,不執行反向工程
      • ReadOnly 只讀不執行,異步執行反向工程檢查,對比后生成變更DDL寫入日志
      • On 打開,僅新建,默認設置。新建表、增加字段、創建索引等可以執行,禁止修改字段長度類型,禁止刪除字段,以免造成數據丟失
      • Full 完全,修改刪除。除了新建表、增加字段、創建索引外,還可以修改字段長度類型、刪除字段等,極其危險,慎用

      反向工程設計于2008年,10多年經驗表明,默認On最合理,不僅滿足開發需要,(隨時加字段),還避免了字段改變而導致的數據丟失風險;

       

      反向工程如此神奇的功能,你想到了什么高端用法嗎?我們將在數萬級分表分庫章節等你!

       

      系列教程

      NewLife.XCode教程系列[2019版]

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

       

      posted @ 2019-03-13 22:19  大石頭  閱讀(4405)  評論(13)    收藏  舉報
      主站蜘蛛池模板: 久久综合国产精品一区二区| 四虎成人精品国产永久免费| 中文无码vr最新无码av专区| 内射一区二区三区四区| 国产一区二区三区小说| 一本大道无码av天堂| 99久久亚洲综合精品成人网| 国产精品久久久久久福利69堂| 忘记穿内裤被同桌摸到高潮app| 久久人人爽人人爽人人av| 夜色资源站www国产在线视频 | 人妻少妇邻居少妇好多水在线| 狼色精品人妻在线视频| 亚洲综合av永久无码精品一区二区| 国产一二三五区不在卡| 色综合色综合久久综合频道88| 热久久美女精品天天吊色| 精品视频在线观看免费观看| 中文字幕人妻av12| 精品无码三级在线观看视频| 无码欧亚熟妇人妻AV在线外遇 | 陵川县| 久久婷婷五月综合色丁香花| 99精品热在线在线观看视| 滦平县| 免费无码一区无码东京热| 国内精品无码一区二区三区 | 成全高清在线播放电视剧| 熟女精品视频一区二区三区| 国产精品大片中文字幕| 久久精品国产久精国产| 粉嫩一区二区三区国产精品| 天堂亚洲免费视频| 久久午夜无码免费| 中文字幕无码免费不卡视频| 久久精品亚洲日本波多野结衣| 国内少妇人妻偷人精品视频| 不卡一区二区三区视频播放| 无码精品一区二区免费AV| 免费无码AV一区二区波多野结衣| 国产精品一区中文字幕|