程式碼生成利器-NCodeGenerate 教程(1) 遍歷資料庫內的所有表

weixin_30788239發表於2020-04-05

  NCodeGenerate 的NCodeGenerate.DBSchema程式集裡邊的各個類對應著資料庫裡邊個各種物件,有資料庫(DatabaseSchema),表(TableSchema),列(ColumnSchema),主鍵(PrimaryKeySchema),鍵(TableKeySchema),檢視(ViewSchema),儲存過程(CommandSchema)等。

  下面作一個小的Demo,遍歷以下資料庫內的所有表的所有欄位並列印出來。

1、新建模板

在模型中輸入以下內容:

 1 using System;
 2 using System.ComponentModel;
 3 
 4 using NCodeGenerateIDE;
 5 using NCodeGenerate.DBSchema;
 6 namespace DynamicCodeGenerate
 7 {
 8     public class myModel
 9     {
10       
11         private System.String _Namespace = string.Empty;
12         public System.String Namespace
13         {
14             get { return _Namespace; }
15             set { _Namespace = value; }
16         }
17         private System.String _RemoveTablePrefix = string.Empty;
18         public System.String RemoveTablePrefix
19         {
20             get { return _RemoveTablePrefix; }
21             set { _RemoveTablePrefix = value; }
22         }
23         private TableSchema _SourceTable;
24         [Editor(typeof(TableEditor), typeof(TableEditor))]
25         public TableSchema SourceTable
26         {
27             get { return _SourceTable; }
28             set { _SourceTable = value; }
29         }
30         private DatabaseSchema _DataBase;
31         [Editor(typeof(DataBaseEditor), typeof(DataBaseEditor))]
32         public DatabaseSchema DataBase
33         {
34             get { return _DataBase; }
35             set { _DataBase = value; }
36         }
37         private System.String _OutPutDir = string.Empty;
38         [Editor(typeof(FolderEditor), typeof(FolderEditor))]
39         public System.String OutPutDir
40         {
41             get { return _OutPutDir; }
42             set { _OutPutDir = value; }
43         }
44       
45 
46     }
47 }

對以上程式碼解釋一下,

private TableSchema _SourceTable;
         [Editor(typeof(TableEditor), typeof(TableEditor))]
      public TableSchema SourceTable        {
            get { return _SourceTable; }
            set { _SourceTable = value; }

}
是對模型定義一個資料可以表的欄位,其中 [Editor(typeof(TableEditor), typeof(TableEditor))] 是定義在屬性設定裡邊呼叫資料庫表的選擇器。同樣的程式碼中的30-36行定義了一個資料庫的屬性。

在程式碼中輸入以下內容:

 1 @model DynamicCodeGenerate.myModel
 2 @{
 3 foreach(var item in Model.DataBase.Tables){
 4     @:TableName:@item.Name
 5       foreach(var itemcolumn in item.Columns)
 6       {
 7                   @:Column:@itemcolumn.Name
 8       }
 9 }
10 
11 
12 
13 }

解釋一下: @model DynamicCodeGenerate.myModel,這一句程式碼和asp.net mvc3 裡邊Razor裡邊的強型別Model的含意一樣。在這裡就是第一段Model定義程式碼中的 名稱空間和類名。

在程式碼中只用到了 Model.DataBase,所以我們只需要在屬性設定對話方塊裡邊設定一下資料庫就行了。

 點選DataBase欄位對屬性進行設定。

好了儲存一下模板,然後執行,看結果了吧。

真是so easy!

 

下載地址:NCodeGenerate.zip

文件:文件

NCodeGenerate 系列文章:

一、程式碼生成利器-NCodeGenerate 是什麼?

二、程式碼生成利器-NCodeGenerate 教程(1) 遍歷資料庫內的所有表

三、程式碼生成利器-NCodeGenerate 教程(2) NCodeGenerate的程式碼公用之一

四、程式碼生成利器-NCodeGenerate 教程(3) 生成程式碼到檔案.

五、程式碼生成利器-NCodeGenerate 教程(4) CodeSmith模板轉換

六、程式碼生成利器-NCodeGenerate 教程(5) 多種資料庫的支援

七、程式碼生成利器-NCodeGenerate 教程(6) 除錯功能 NTrace 輸出

八、程式碼生成利器-NCodeGenerate 教程(7) 揭開除錯功能 的神祕面紗

九、程式碼生成利器-NCodeGenerate 教程(8) 揭開Razor模板引擎的神祕面紗

十、程式碼生成利器-NCodeGenerate 教程(9) 資料型別對映Map功能

轉載於:https://www.cnblogs.com/NCodeGenerate/archive/2012/12/19/NCodeGenerate_1.html

相關文章