本來是想弄完JavaScript混淆器再來整理這個的
但是天天都在和數據庫打交道
索性還是先簡化自己的工作量吧
把自己關於代碼生成器的一些想法放上來由於本人從開始工作到現在
基本做的都是MIS
從剛開始的腳本模式到領域對象模式
然後是從手工輸入SQL語句到由反射自動生成基本的SQL語句
雖然說方式變了很多
但還是逃不出一些瑣碎的事情
比如說
中間層一個表對應的實體
你總要一個字段一個字段地把屬性弄上去吧
列就算了
多那麼點誰都頭痛
前台界面上你得把一個個字段對應的控件放上去吧
調位置沒法省什麼工
但放上去也很麻煩吧
後台數據庫操作如果要自己寫Update
Insert或者Delete就更麻煩了
雖然有不少代碼生成器
可不是覺得麻煩
就是覺得不順手
所以自己來動手
單位裡自己寫了一個代碼生成器
不過不算是基於模板的
而且也不夠智能和通用
嚴格說起來
只是在指定的地方輸出固定的代碼而已
不過其他方面的功能還不錯
有點像現在的Codematic
不過Codematic現在似乎有那麼一個模板功能了
看模板
似乎是用xslt來生成代碼
這個似乎是不錯的主意
能省掉自己解析模板的工作
不過覺得麻煩了一些
暫時不考率之
再一個咚咚就是很流行的CodeSmith
這東西不錯
現成的模板很多
只要流行的框架它都能有模板套用
編輯器之類的東西也挺完善
不過還是覺得它麻煩
原因稍後再說
CodeProject上面有一個
Template based code generation
和
Smart Template Engine
感覺這
個東西和CodeSmith有些異曲同工的地方
CP上的都是需要模板中按照一定的規律進行替換後就可以生成輸出的CS代碼
然後對CS代碼進行動態編譯
執行後就得到了最終的代碼
這裡就出現了我剛才說的麻煩的地方
你必須有點編程的知識
而且還必須使用生成器支持的語言
而且模板編寫起來也比較復雜
上手的時間比較長
還有一個可能不是原因的原因
我看到的幾個代碼生成器
似乎都只輸出固定語言的代碼
分析一下常用代碼生成器的功能
不外乎如下
需要遍歷用戶所選的表
遍歷每個表的字段
遍歷表的主鍵列(當然外鍵不少人也用
可惜我一般不在數據庫表加這個
暫時就不考慮了
等有時間再加入)
分析字段的類型
根據模板生成代碼
所以
我的目標就是
模板定義簡單
不需要復雜的定義
只需要通過定義一些簡單的標記就可以完成
生成的代碼不受語言的限制
各種語言的語法由模板來定義就好了
可以擴展
就是能支持插件
可以自己擴展一些標記
完成一些比較有針對性的事情
當然這個插件就看dotNet支持哪些語言了
如
數據庫的類型和具體語言中數據類型的相互轉換
不同風格的名稱轉換等
可以利用簡單的標記取得一些必須的屬性
如
表名
列名
在CLS中的數據類型
字符串長度等等
生成代碼的時候
可以選擇跳過某些不需要的字段
比如有些列對應的代碼已經再基類中定義了
可以指定為每個選定的表都生成單獨的文件
還是將所有生成的代碼都放在一個文件中
PS
改個標題
其實
不一定要連接到實際的數據庫
只要能有元數據就可以了
From:http://tw.wingwit.com/Article/program/net/201311/11405.html