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 系列文章: