代码生成工具随笔(2) ---我的生成工具
目前有很多代碼生成工具,很多做得很好,我在上一篇關(guān)于代碼生成工具的隨筆(代碼生成工具隨筆(1) ---關(guān)于代碼生成器 )中,大概介紹了一些代碼生成工具的現(xiàn)狀,也得到很多人的關(guān)注。
由于本人很早就在代碼生成工具方面有所研究,因此在開發(fā)過程中沒有使用CodeSmith,MyGeneration子類的生成工具,我覺得很多地方使用這些工具還是很麻煩,按照別人定制模板總是感覺很乏味,沒有滿足感和成就感,感覺自己掌握生成工具的核心代碼總是很好(實(shí)際上也是,而且可以很快定制出新的架構(gòu)代碼生成),另外如果自己掌握了數(shù)據(jù)庫的一些信息,還可以作很多事情,不僅僅是一般的代碼生成了, 如還可以生成數(shù)據(jù)庫文檔,測(cè)試數(shù)據(jù)導(dǎo)入等等的一些。
在實(shí)際的開發(fā)中,公司很多同事、朋友都提出了很多很好的建議和需求,因此我的代碼生成工具也在不斷的改進(jìn)完善中,從開始的一般代碼生成,到一個(gè)架構(gòu)完整解決方案的生成, 從開始的控制臺(tái)程序到整合很多功能Windows Forms 程序,一切都不斷的完善中...
本站的代碼生成工具已經(jīng)放在了www.iqidi.com上,可供下載使用
我的C#代碼生成工具下載地址:
(個(gè)人網(wǎng)站)下載地址:http://www.iqidi.com/Download/Database2SharpSetup.rar
(華軍軟件)下載地址:http://www.newhua.com/soft/54592.htm
(天空網(wǎng)站)下載地址:http://www.skycn.com/soft/32456.html?
下面截一些圖像,對(duì)C#代碼生成工具進(jìn)行介紹,希望能夠給大家?guī)砀嗟男畔⒑蛶椭?br />1。支持NHibernate代碼和PetShop架構(gòu)代碼的生成(多種形式).
2。可以查看數(shù)據(jù)庫的信息和實(shí)現(xiàn)查詢分析器的功能,可以很快地看看數(shù)據(jù)庫的信息哦
3。數(shù)據(jù)庫文檔的生成,在模塊設(shè)計(jì)中非常有用,誰想去寫描述和字段名稱,類型的對(duì)應(yīng)關(guān)系呢,笨!
4。測(cè)試數(shù)據(jù)腳本的生成,在外鍵非常復(fù)雜的表中,我們想添加一條記錄都是很容易哦,這個(gè)可以更加表的外鍵關(guān)系調(diào)整插入測(cè)試數(shù)據(jù)的順序,很周到吧。
5。最新加入了Web界面自動(dòng)生成功能
6。最新加入了Castle的ActiveRecord代碼生成功能
2. 增加數(shù)據(jù)庫表結(jié)構(gòu)SQL腳本的生成(各種不同的數(shù)據(jù)庫生成不同的SQL腳本),在打開表信息的時(shí)候同時(shí)在下方生成。
3. 增加Select、Update、Insert和Delete基本語句代碼的生成。
4. 增加實(shí)體類快速生成的功能,直接在窗體中打開,并用語法高亮顯示。
5. 增加可以對(duì)表進(jìn)行選擇性生成代碼的功能。
6. 增加對(duì)MySQL數(shù)據(jù)庫GBK的支持,方便使用中文操作,完好支持MySQL5.0。
7. 改善SQL Analyzer和測(cè)試SQL腳本的操作。
8. 改善數(shù)據(jù)庫配置項(xiàng)管理,提供更方便簡(jiǎn)單的操作。
?
下面這個(gè)是代碼生成工具生成的代碼,一個(gè)解決方案中包括各層所需要的代碼哦,另外Petshop架構(gòu)一、三中生成實(shí)體類對(duì)應(yīng)的集合,我們完全可以使用該集合代替ArrayList,而且該集合對(duì)象是采用目前最好的實(shí)現(xiàn)方式來做的,繼承自可以排序的集合類。目前我還沒有完成頁碼代碼的生成,下一步工作就是要做這個(gè)事情,呵呵。
?
NHibernate代碼主要是生成實(shí)體類的代碼和HBM文件, 這些類的關(guān)系是自動(dòng)根據(jù)您的表關(guān)系自動(dòng)完成的哦,比較智能吧
Web界面代碼和后臺(tái)操作代碼等自動(dòng)生成,你如果開發(fā)Web的話,會(huì)節(jié)省你很多調(diào)整界面的時(shí)間,加快開發(fā)效率
Castle代碼目前主要是生成實(shí)體類的代碼(包含各種ActiveRecord所需要的Attribute), 關(guān)系自動(dòng)生成,模版代碼的定制能力更強(qiáng)。
using System;
using System.Collections;
using System.Xml.Serialization;
using Castle.ActiveRecord;
namespace HuaweiSoftware.IPSPBD.Entity
{
??? [ActiveRecord("Product")]
??? public class ProductInfo : ActiveRecordBase
??? {
??????? #region 成員變量
??????? private IList m_itemList;????????
??????? private string m_productId;????????
??????? private CategoryInfo m_category;????????
??????? private string m_name;????????
??????? private string m_descn;????????
??????? #endregion
??????? #region 屬性
??????? [HasMany(typeof(ItemInfo), Table="Item", ColumnKey="ProductId")]
???????? public virtual IList ItemList
??????? {
??????????? get
??????????? {
??????????????? return this.m_itemList;
??????????? }
??????????? set
??????????? {
??????????????? this.m_itemList = value;???????????????
??????????? }
??????? }
??????? [PrimaryKey(PrimaryKeyType.Assigned, "ProductId")]
???????? public virtual string ProductId
??????? {
??????????? get
??????????? {
??????????????? return this.m_productId;
??????????? }
??????????? set
??????????? {
??????????????? this.m_productId = value;???????????????
??????????? }
??????? }
??????? [BelongsTo("Category")]
???????? public virtual CategoryInfo Category
??????? {
??????????? get
??????????? {
??????????????? return this.m_category;
??????????? }
??????????? set
??????????? {
??????????????? this.m_category = value;???????????????
??????????? }
??????? }
??????? [Property("Name")]
???????? public virtual string Name
??????? {
??????????? get
??????????? {
??????????????? return this.m_name;
??????????? }
??????????? set
??????????? {
??????????????? this.m_name = value;???????????????
??????????? }
??????? }
??????? [Property("Descn")]
???????? public virtual string Descn
??????? {
??????????? get
??????????? {
??????????????? return this.m_descn;
??????????? }
??????????? set
??????????? {
??????????????? this.m_descn = value;???????????????
??????????? }
??????? }
??????? #endregion
???????
??????? #region 靜態(tài)方法
???????
??????? public static void DeleteAll()
??????? {
??????????? ActiveRecordBase.DeleteAll(typeof(ProductInfo));
??????? }
???????
??????? public static ProductInfo[] FindAll()
??????? {
??????????? return ((ProductInfo[])(ActiveRecordBase.FindAll(typeof(ProductInfo))));
??????? }
???????
???????? public static ProductInfo Find(string ProductId)
??????? {
??????????? return ((ProductInfo)(ActiveRecordBase.FindByPrimaryKey(typeof(ProductInfo), ProductId)));
??????? }
????
???????
??????? #endregion
??? }
}
總結(jié)
以上是生活随笔為你收集整理的代码生成工具随笔(2) ---我的生成工具的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 百度小程序html转码,百度小程序全局配
- 下一篇: OJ1086: ASCII码排序(多实例