ERP代碼生成器
這個代碼生成器的作用是彌補Code Smith在批量表生成方面的不足。
代碼生成器運行效果
基本的使用方法是,選擇數據庫,左邊的樹會列出數據庫中的所有表,在參數區域,Template會列出當前目錄下的CodeSmith模板,選擇一個模板,Parameter會列出選中的模板的參數信息,選擇生成的代碼的存放路徑為Target Folder
解決方案視圖
下載源代碼到本地後,請先添加程序集引用,包括Code Smith和SMO
SMO是操作SQL Server元數據的一套非常有效率的API,以用於獲取SQL Server表信息
程序代碼只有2個窗體,主窗體和連接數據庫的窗體,在啟動主程序後,自動會打開數據庫連接窗體
之後,會在主窗體中顯示打開的數據庫,及它的所有表。
點擊樹節點前的CheckBox,會將該表添加到要生成模板代碼的表中,中間一列是文本框,可以編輯。
Template會列出當前目錄中所有cst結尾的文件,這裡沒有驗證該文件是否是CodeSmith模板文件
lstTemplate.Items.Clear();
string[] files=Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, "*.cst");
lstTemplate.Items.AddRange(files);
在參數填寫區域,請用=將參數名和參數值配對填寫
對於Target Folder,窗體啟動時會給當前路徑默認值
txtTargetFolder.Text = AppDomain.CurrentDomain.BaseDirectory;
真正實現調用Code Smith模板,生成代碼的方法
CodeTemplateCompiler compiler = new CodeTemplateCompiler(templateFile);
compiler.Compile();
if (compiler.Errors.Count == 0){
CodeTemplate template = compiler.CreateInstance();
DatabaseSchema database = new DatabaseSchema(new SqlSchemaProvider(), connectionString);
TableSchema tableSchema = database.Tables[tableName];
template.Render(writer);
}
這就是這個代碼生成器的全部了,關鍵的內容還是在Code Smith模板的編寫
這裡還有一個小問題,請看圖
Table Node和它的CheckBox之前的距離太小,有些不美觀,一直找不到是如何設置參數,能讓CheckBox與Node之間的距離增大一點,以保持美觀。