• <td id="ae6ms"><li id="ae6ms"></li></td>
  • <xmp id="ae6ms"><td id="ae6ms"></td><table id="ae6ms"></table>
  • <table id="ae6ms"></table>
  • <td id="ae6ms"></td>
    <td id="ae6ms"></td>
  • <table id="ae6ms"></table><table id="ae6ms"><td id="ae6ms"></td></table>
  • <td id="ae6ms"></td>
  • <table id="ae6ms"><li id="ae6ms"></li></table>
  • <table id="ae6ms"></table>
    西西軟件園多重安全檢測下載網站、值得信賴的軟件下載站!
    軟件
    軟件
    文章
    搜索

    首頁西西教程軟件使用 → CodeSmith代碼生成器是怎么用的?

    CodeSmith代碼生成器是怎么用的?

    相關軟件相關文章發表評論 來源:西西整理時間:2017/2/22 15:41:27字體大?。?em class="fontsize">A-A+

    作者:西西點擊:0次評論:0次標簽: codesmith 代碼生成器

    CodeSmith Generator7.1.0中文版
    • 類型:編程輔助大?。?i>25.3M語言:中文 評分:10.0
    • 標簽:
    立即下載

    CodeSmith是一款很好用的代碼生成器軟件,對這款軟件不熟悉的童鞋可能不知道怎么用,它可以和PowerDesigner數據庫設計工具一起使用更好,下面解釋如何用CodeSmith實現預期的結果的,事先聲明一下,在此只做一個簡單的Demo,并不詳細的講解CodeSmith各個強大的功能,有興趣的朋友可以打開CodeSmith的幫助文檔了解.我只做個拋磚引玉,希望能激起大家更多思想的火花~

    先看看CodeSmith的工作原理:

    簡單的說:CodeSmith首先會去數據庫獲取數據庫的結構,如各個表的名稱,表的字段,表間的關系等等,之后再根據用戶自定義好的模板文件,用數據庫結構中的關鍵字替代模板的動態變量,最終輸出并保存為我們需要的目標文件.好,原理清楚了,就開始實踐吧:

    1. 運行CodeSmith,可以看到如下界面:

    2. CodeSmith是創建模板的地方,首先當然是創建一個模板啦,點擊工具欄最左邊的New Document—C# Template,如圖所示:

     

    3. 點擊運行按鈕,運行結果如下:

    好,我們來分析為什么會得到這樣的運行結果吧,點擊運行窗口左下角的Template按鈕返回模板設計窗口,可以發現,只要是沒有被<%%>或者<scriptrunat="template"></script>包含的文字均被直接輸出了,這些以后就要被換成我們分層架構中一些一成不變的模板代碼:

    4. 好了,簡單了解啦一些CodeSmith的代碼結構,下面就開始用它來生成我們的分層代碼吧,在此我就不介紹分層架構的概念了,不然就偏離主題了.為了能更簡單明了的說明,我們在此就只用CodeSmith生成分層架構的實體層吧.

    Major.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace Entity
    {
    publicpartialclass Major
    {
    publicInt32 MajorID{ get;set; }
    publicString Name{ get;set; }
    publicString Remark{ get;set; }
    }
    }

    Student.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace Entity
    {
    publicpartialclass Student
    {
    publicString StudentID{ get;set; }
    publicInt32 MajorID{ get;set; }
    publicString Name{ get;set; }
    publicBoolean Sex{ get;set; }
    publicInt32 Age{ get;set; }
    publicString Remark{ get;set; }
    }
    }

    我將兩個文件中重復的代碼使用黃色背景色加深了,我們可以發現,如果每個表都要通過手動創建,那么將有大量的代碼(黃色背景)需要復制粘貼操作,這些操作是繁瑣而沒有任何意義的.因此,我們會希望將黃色背景部分的代碼做成模板,而其他變化的代碼由數據庫的結構動態生成,如此一來,我們就不用再為這些煩人的復制粘貼操作懊惱了.

    5. 那么就開始我們的實踐吧,就在剛剛創建好的文件開始吧,先隨意保存到一個目錄下,命名為test.cst,接著刪除多余的代碼,只保留第一行,該行表明我們的模板使用何種語言,這里我們使用C#.

    <%@ CodeTemplateLanguage="C#" TargetLanguage="Text" Src="" Inherits=""Debug="False" CompilerVersion="v3.5"Description="Template description here."%>

    6. 參照CodeSmith的工作原理,我們首先要為CodeSmith提供一個數據庫,要怎么使它和SQL Server 2005關聯起來呢?只要加上下面的代碼就行了:

    <%-- 加載訪問數據庫的組件SchemaExplorer,并聲明其使用的命名空間 --%>
    <%@ AssemblyName="SchemaExplorer"%>
    <%@ ImportNamespace="SchemaExplorer"%>

    <%-- 數據庫 --%>
    <%@ PropertyName="SourceDatabase"DeepLoad="True" Optional="False" Category="01. GettingStarted - Required" Description="Database that the tables views, and storedprocedures should be based on. IMPORTANT!!! If SourceTables and SourceViews areleft blank, the Entire Database will then be generated."%>

    7. 好了,有了數據庫連接,接著還需要一個模板,為了便于管理,我們新建一個文件用于設計模板,FileNewBlank  Template,并添加如下代碼,最好保存到test.cst所在的文件夾內,命名為Entity.cst:

    <%@ CodeTemplateInherits="CodeTemplate"TargetLanguage="Text" Description="NetTiers main template."Debug="True" ResponseEncoding="UTF-8"%>

    <%@ AssemblyName="SchemaExplorer" %>
    <%@ ImportNamespace="SchemaExplorer" %>

    <%-- 要打印的表 --%>
    <%@ PropertyName="Table" DeepLoad="True"Optional="False" Category="01. Getting Started - Required"Description="Database that the tables views, and stored procedures shouldbe based on. IMPORTANT!!! If SourceTables and SourceViews are left blank, theEntire Database will then be generated." %>

    接著繼續添加如下代碼:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace Entity
    {
    publicpartialclass<%= Table.Name%>
    {
    <%foreach(ColumnSchema col inTable.Columns){ %>
    public<%= col.DataType %><%=col.Name %>{ get;set; }
    <% } %>
    }
    }

    <%=Table.Name%>          表示在此處輸出表的名稱

    <%foreach(ColumnSchema col in Table.Columns){ %> <% } %>       為循環語句,在{}循環輸出列信息.

    <%=col.DataType %>       表示在此處輸出列的類型

    <%=col.Name %>             表示在此處輸出列的名稱

    如圖所示:

    8. 模板創建好后,要在test.cst文件中注冊一下,不然人家怎么知道有你這么一個模板存在呀,在test.cst文件繼續輸入如下代碼:

    <%-- 注冊實體層Entity模板 --%>
    <%@ RegisterName="EntityTemplate" Template=" Entity.cst"MergeProperties="Flase" ExcludeProperties=""%>

    9. 好了,模板注冊好了,根據CodeSmith工作原理,我們要結合模板和數據庫結構來批量生成代碼啦,但是我們生成的目標文件要輸出到哪里呢?這時我們會需要一個用戶自定義屬性,用于設置目標文件的輸出目錄,在test.cst文件的末尾輸入如下代碼:

    10. 現在連輸出目錄也有了,該想辦法寫些函數來完成將數據庫架構傳遞給模板的工作啦,在test.cst文件的末尾輸入如下代碼:

    CodeTemplateTemplate = new EntityTemplate();  就是創建了一個新的模板

    foreach(TableSchematable in this. SourceDatabase.Tables){}    表示循環輸出數據庫中的表

    Template.SetProperty("Table",table);                         就是向模板設置屬性,還記得我們在Entity.cst里面設置了一個Table屬性嗎,我們就是通過這個方法給這個屬性設值的.

    Template.RenderToFile(FileDirectory,true);               表示將Temlate里的內容全部輸出到FileDirectory目錄中,true表示如果文件存在直接覆蓋.

    11. 函數寫好了,離成功不遠啦,我們在test.cst的最后再添加如下代碼,用于調用剛剛寫好的函數.至此,模板文件的制作已經完成.

    <%
    //創建實體層Entity類
    this.GenerateEntityClasses();

    Debug.WriteLine("OK");
    %>

    12. 好啦,現在只要設置我們要導出的數據庫和輸出目錄就可以運行看結果啦,點擊CodeSmith主窗體右下角Properities面板中SourceDatabase屬性欄右側的…按鈕,彈出數據庫設置對話框,我們要在此添加一個新的數據庫連接:

    13. 點擊Add按鈕,屬性設置如圖,我們選擇的是在前一章用PowerDesigner創建好的PD_test數據庫:

    14. 點擊OK,回到數據庫選擇對話框,選擇剛剛創建好的數據庫連接:

    15. 接著是設置目標文件輸出目錄,我在這里設置為桌面的一個新建文件夾:

    16. OK,萬事俱備,可以點擊運行按鈕讓CodeSmith為我們批量生成代碼啦:

    打開生成的文件,就可以看到我們期待看到的代碼啦:

    好了,這些是基礎,但是只要你掌握了這些就可以開始自己的CodeSmith之旅啦,我也只能送大家到此咯~其他更多的知識點希望大家能自行查看幫助文章或者上網查詢,很高興又和大家分享了自己的一點心得,接下來想再回頭復習一下設計模式,也打算寫一些文章,歡迎大家關注~

      代碼生成器
      (17)代碼生成器
      西西軟件園提供好用的代碼生成器軟件下載,強大的代碼生成功能,強大的模板代碼生成引擎,可根據模板生成各種代碼.支持新建整個項目和批量代碼生成功能.自動生成增刪改查的存儲過程和數據記錄的腳本.完全可以自定制的開源代碼生成模板組件管理.多種數據庫支持。...更多>>

      相關評論

      閱讀本文后您有什么感想? 已有人給出評價!

      • 8 喜歡喜歡
      • 3 頂
      • 1 難過難過
      • 5 囧
      • 3 圍觀圍觀
      • 2 無聊無聊

      熱門評論

      最新評論

      發表評論 查看所有評論(0)

      昵稱:
      表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
      字數: 0/500 (您的評論需要經過審核才能顯示)
      女人让男人桶30分钟免费视频,女人张开腿让男人桶个爽,一进一出又大又粗爽视频
    • <td id="ae6ms"><li id="ae6ms"></li></td>
    • <xmp id="ae6ms"><td id="ae6ms"></td><table id="ae6ms"></table>
    • <table id="ae6ms"></table>
    • <td id="ae6ms"></td>
      <td id="ae6ms"></td>
    • <table id="ae6ms"></table><table id="ae6ms"><td id="ae6ms"></td></table>
    • <td id="ae6ms"></td>
    • <table id="ae6ms"><li id="ae6ms"></li></table>
    • <table id="ae6ms"></table>