目前有很多代码生成工具,很多做得很好,我在上一篇关于代码生成工具的随笔(代码生成工具随笔(1) ---关于代码生成器 )中,大概介绍了一些代码生成工具的现状,也得到很多人的关注。
由于本人很早就在代码生成工具方面有所研究,因此在开发过程中没有使用CodeSmith,MyGeneration子类的生成工具,我觉得很多地方使用这些工具还是很麻烦,按照别人定制模板总是感觉很乏味,没有满足感和成就感,感觉自己掌握生成工具的核心代码总是很好(实际上也是,而且可以很快定制出新的架构代码生成),另外如果自己掌握了数据库的一些信息,还可以作很多事情,不仅仅是一般的代码生成了, 如还可以生成数据库文档,测试数据导入等等的一些。
在实际的开发中,公司很多同事、朋友都提出了很多很好的建议和需求,因此我的代码生成工具也在不断的改进完善中,从开始的一般代码生成,到一个架构完整解决方案的生成, 从开始的控制台程序到整合很多功能Windows Forms 程序,一切都不断的完善中...
本站的代码生成工具已经放在了www.iqidi.com上,可供下载使用
我的C#代码生成工具下载地址:
(个人网站)下载地址:http://www.iqidi.com/Download/Database2SharpSetup.rar
(华军软件)下载地址:http://www.newhua.com/soft/54592.htm
(天空网站)下载地址:http://www.skycn.com/soft/32456.html
下面截一些图像,对C#代码生成工具进行介绍,希望能够给大家带来更多的信息和帮助。
1。支持NHibernate代码和PetShop架构代码的生成(多种形式).
2。可以查看数据库的信息和实现查询分析器的功能,可以很快地看看数据库的信息哦
3。数据库文档的生成,在模块设计中非常有用,谁想去写描述和字段名称,类型的对应关系呢,笨!
4。测试数据脚本的生成,在外键非常复杂的表中,我们想添加一条记录都是很容易哦,这个可以更加表的外键关系调整插入测试数据的顺序,很周到吧。
5。最新加入了Web界面自动生成功能
6。最新加入了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 静态方法
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
}
}