『 天道酬勤 』 www.LiTianping.com 李天平的博客

君子之行,静以修身,俭以养德。非淡泊无以明志,非宁静无以致远。

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  115 随笔 :: 18 文章 :: 1905 评论 :: 59 Trackbacks

软件简介:
    Codematic (原名:LTP.Net代码自动生成器)是一款为 C# 数据库程序员设计的自动代码生成器,Codematic 生成的代码基于基于面向对象的思想和三层架构设计,结合了Petshop中经典的思想和设计模式,融入了工厂模式,反射机制等等一些思想。采用 Model + DAL + BLL +  Web 的设计,主要实现在 C# 中对应数据库中表的基类代码的自动生成,包括生成属性、添加、修改、删除、查询、存在性、 Model 类构造等基础代码片断,使程序员可以节省大量机械录入的时间和重复劳动,而将精力集中于核心业务逻辑的开发。
   Codematic 同时提供方便的数据库查询管理,SQL脚本生成,存储过程生成,数据库文档生成,Web项目文件发布,代码生成自动导出文件等多项开发工作中常用到的功能,您可以很方便地进行项目开发。
 

◎2005-12-14 LTP.Net(C#)代码自动生成器1.7 版发布
◎2005-12-20 LTP.Net代码自动生成器 V1.8版发布
◎2005-12-22 LTP.Net代码自动生成器 V1.9  
◎2005-12-28 LTP.Net代码自动生成器 V1.9.1版更新(附带一套系统框架源码)   
◎2006-2-1 LTP.Net代码自动生成器 V1.9.4 版发布(全面支持SQLServer2005,Oracle 等)
◎2006-3-15 Codematic.Net代码自动生成器V1.9.7 版免费下载!
◎2006-5-10 Codematic .Net代码自动生成器 Alpha版(.Net 2.0版)提供下载

    最新版软件及示例项目下载: http://www.maticsoft.com/softdown.aspx

基本功能描述:

1.自动代码生成。
  可以生成三层架构的代码。如果采用类似petshop架构模式的架构,则代码生成效率很高。
  它可以生成:实体Model,DAL(数据访问层),IDAL(接口层),DALFactory(类工厂),BLL(业务逻辑层),WEB层等多层的代码,可以节省大量的时间来做业务逻辑的代码,那些重复的代码就交给它去做吧,1分钟生成一个架构所有的基本代码。我感觉有了它开发项目的效率简直好轻松。
 (1)自动生成属性注释.
 (2)可以自由设定命名空间和实体类名。
 (3)免费提供数据库访问,页面数据校验等等基础类库及封装类库源码。自己可以对其进行修改保存满足自己的需要。
 (4)支持不同类型数据层的生成: 基于SQL语句,基于参数,基于存储过程。
 (5)支持选择不同架构代码生成:简单基本三层结构;基于工厂模式+反射机制+缓存机制的复合结构;自定义结构模版。
 (6)可以生成增加,显示等页面主体Html代码,和后台.cs处理代码。
 (7)支持对多种类型数据库生成代码:如SQLServer2000,SQLServer2005,Oracle,OleDb等。

2.数据库管理器。
   类似SQLServer2000的管理界面,方便平常在代码编辑的时候想查看数据库的信息,并且可以很直观的查看字段类型,长度,主键,默认值等详细信息,省去了在代码和数据库管理器之间的来回切换,方便快捷。
 (1)支持多种类型数据库。如SQLServer2000,SQLServer2005,Oracle,OleDb等。
 (2)创建表脚本和存储过程及数据脚本,支持执行。
 (3)导出表脚本和存储过程文件。
 (4)表的重命名,删除操作。

3.查询分析器。
   实现类似于SQLServer的查询分析器的功能,方便编写代码时想进行数查询。
 (1)实现执行选中部分SQL语句。
 (2)实现关键字高亮。
 (3)支持F5快捷键执行语句。
 (4)实现打开现有脚本,保存当前脚本功能。
 (5)实现错误检测提示功能。

4. 自动生成存储过程和SQL脚本。
   可以根据选定的数据库和表(可多选),生成表的创建脚本,以及表数据的插入脚本,同时可以生成表的增,删,改,查等操作的存储过程脚本。支持在当前生成和导出脚本文件功能.

5. 自动生成数据库结构文档。
   可以根据选定的数据库和表(可批量生成),可以生成字段的详细信息,包括默认值,描述等信息.生成相应的表结构文档,免去手工写文档和操作的麻烦。

6. Web项目文件发布。
   有时候我们需要根据自己的要求,导出项目文件,VS.NET自带的复制项目功能,对一些图片或js 文件等等其他一些文件,不能自动导出,除非把这些都添加到项目里。所以,有了这个功能,对项目发布非常的方便,并且支持自己定义哪些发布哪些不发布。

7. 代码生成自动导出功能。
  代码生成器可以选定一个表来生成代码,然后粘贴到项目里。但如果表很多,来回这么操作太麻烦,所以,这个功能可以按三层架构,自动建立文件夹,并自动生成所选的所有表的.cs代码文件,只需要添加到项目里就可以了。

8.其他功能:
 (1) C#ToVB.NET代码转换器.
 (2) 实现了热键呼出。可以自己设定热键.当你点窗口的[X]关闭程序时,程序会自动隐藏运行在任务栏,通过热键可以快速呼出窗口。

  

   

方便工作,娱乐生活,用智慧改变世界,用创造改变生活。其实,工作也很快乐!— 李天平

 

posted on 2005-12-03 01:17 李天平 阅读(7330) 评论(49)  编辑 收藏 所属分类: 自己开发的工具

评论

#1楼  2005-12-04 16:25 小李程式™      
好东西,正用得着,也很欣赏这种模式!
  回复  引用  查看    

#2楼  2005-12-04 17:27 小李程式™      
老兄,你开了个好头啊,方便了自己也方便的大家!
另外,我想这款代码自动生成工具应该算是此方面功能最全的一个了,既然如此,为了促进代码自动生成器的发展,建议老兄建立一个代码自动生成器的开源项目,让兄弟们共同来完善这个项目,给代码自动生成工程添砖加瓦,岂不是更好!
  回复  引用  查看    

#3楼  2005-12-14 21:04 zfphere      
我今天试着用了下,发现有这么几个问题:
1、
如果用户不是sa帐号,就会提示因为权限问题 model 数据库无法访问,这就导致了整个应用程序的关闭,所以我们是不是加上一个判断,只加载该登陆用户所拥有权限库列表。
2、
数据库访问层DbManagerODBC.cs功能不是特别好。比如:
public static void ExecuteSqlTran(string SQLStringList) 方法,是否该成如下:
public static bool ExecNonQuery(ArrayList sql)
{
bool enq = false;

SqlConnection myConnection = new SqlConnection(SqlDataBase.ConnectionString);
myConnection.Open();
SqlTransaction myTransaction = myConnection.BeginTransaction();
SqlCommand myCommand = myConnection.CreateCommand();
myCommand.Transaction = myTransaction;
try
{
for(int i=0; i<sql.Count;i++)
{
if(sql[i].ToString().Length>1)
{
myCommand.CommandText = sql[i].ToString();
myCommand.ExecuteNonQuery();
}
}
myTransaction.Commit();
myConnection.Close();
enq = true;
}
catch(Exception excp)
{
myTransaction.Rollback();
result=excp.ToString();
}
return enq;
}
欢迎讨论^_^
  回复  引用  查看    

#4楼  2005-12-14 23:35 东海风      
非常感谢你为大家提供了一个很好的工具,我刚下载,粗略看了一下,好像存在这样一个问题:
如果表的主键是标识,增加数据时应该会出错。
我没有测试,不知我的看法是否正确。
  回复  引用  查看    

#5楼  2005-12-15 09:09 李天平 [未注册用户]
@东海风 ,你说的“增加数据时”是在数据层的代码里增加数据是吗?
这个我的代码生成里有个选项GetMaxId(),如果选择它,是手动获得最大ID(即非标识主键的情况下)。如果不选择它,则会按标识主键处理,并不会对标识主键添加数据。所以,不会出现你说的问题。
  回复  引用    

#6楼  2005-12-15 09:41 烙饼与馒头      
用了下,不错,能开源吗?因为如果要用还是要自己根据需要增加生成代码的灵活性的,如果可以给份的话,请发到muse_er@163.com 谢谢。
  回复  引用  查看    

#7楼  2005-12-16 13:04 李天平 [未注册用户]
感谢大家的关注,自从这个软件发布,有很多网友给予关注并且发来邮件,有提出需求的,有提供建议的,也有检测出bug的,如Kittow,王路,李韬,liangjinliang,小李程式,zfphere,东海风...等等,我很感谢大家!我也在大家的鼓励下,用业余时间来完善它,因为平常工作很忙,没有时间来专心做。有网友提出开源,让大家共同来完善这个项目,我也想过这个问题。由于目前这个软件的问题还很多,还有很多架构性的东西还没完善,所以,我想等这个软件形成一个稳当版本的时候,我会发布源码。让大家来共同探讨。希望大家给予支持!
  回复  引用    

#8楼  2005-12-16 19:08 东海风      
看到你的回复了,开始我没注意这个选项可以影响主键的更新方式,不好意思了。
这个软件不错!期待着将来看到源码。
  回复  引用  查看    

#9楼  2005-12-20 08:54 yishan [未注册用户]
能开源吗?发一个源代码给我好吗>\
我的邮箱yishan116@163.com
  回复  引用    

#10楼  2005-12-20 09:04 阿梅 [未注册用户]
非常好,以前我就用了你的1.5版的,有兄弟们的支持,编程变得不是那么枯燥了。真的很希望能看到源代码,在CSDN你也是顶顶有名呀。
  回复  引用    

#11楼  2005-12-20 09:07 njbaige [未注册用户]
Well Done~
  回复  引用    

#12楼  2005-12-20 11:02 玉开      
不错,我也想看到源文件
  回复  引用  查看    

#13楼  2005-12-20 11:07 非非.Net      
不错,不错...功能确实很强大,我的代码生成器的后续功能可以参照开发了,呵呵
  回复  引用  查看    

#14楼  2005-12-21 15:33 vb1980 [未注册用户]
不错,希望能开源
  回复  引用    

#15楼  2005-12-21 21:12 张 宇      
今天下载下来测试了。发现一些小问题:
1、我的表主键是字符类型,但生成时model是string类型,但在getmaxid反回却是int
2、DALfactory类的load处出现错误提示:找不到相应的程序集(其本上这个,是在公司测试的。现在在家里记不太清了。)。因为按你的提示是load一个命名空间。但实际上应该是一个程序集。是不是我有哪里没有搞对。
  回复  引用  查看    

#16楼  2005-12-21 23:06 zmgzt [未注册用户]
1.8Net代码自动生成器的DALFactory工厂标签怎么没有了,界面上的标签和帮助文件里的不一样,请指教.DALFactory工厂标签,在哪里,或者如何生成工厂类
多谢!

  回复  引用    

#17楼  2005-12-22 08:58 李天平 [未注册用户]
请大家注意,代码生成 菜单里的 设置选项。可以设置 代码生成的结构和数据层的代码方式。
◎张 宇 ,第一个问题我已解决。关于第二个问题确实如此,load确实是程序集。
Assembly.Load(程序集).CreateInstance(类全名);
如果不是独立的程序集,可以用下面这种方式:
// 使用与指定参数匹配程度最高的构造函数来创建指定类型的实例
string obj = ConfigHelper.GetConfigString("DbObject");
string TypeName="CodeBuild."+obj+".DbObject";//类名
Type objType = Type.GetType(TypeName,true);
return (IDbObject)Activator.CreateInstance(objType);

其他的问题下个版本都已解决,如有问题请发邮件:l_tp@163.com
  回复  引用    

#18楼  2005-12-23 21:46 binking      
反映很强烈呀:-)
好好研究一下。
  回复  引用  查看    

#19楼  2005-12-24 22:23 Tadpale [未注册用户]
建议数据层能支持多种数据库,如Access、Oracle、Sybase 等。所以软件设计上可能需要添加元数据管理模块,与现有的表示层设计模块分开;数据层上则需要重新架构一套通用数据访问组件。
建议业务对象直接生成、采用强类型的 DataSet。
建议逻辑层能实现一次对多表的操作,如订购单-订购单明细的情况。
建议丰富表示层,至少要有完整的 Browse-Details 套页。控件的选择上应该可以更灵活,例如如存在主外键关系,可选择DropDownList、如字段在DotNet 中为DateTime类型,可选择日历弹板等。
一点拙见,不当之处还请各位包涵,呵呵。tadpale@sohu.com
  回复  引用    

#20楼 [楼主] 2005-12-24 23:12 【李天平】      
@Tadpale ,谢谢你的建议,对于支持多种数据库,软件的架构设计中已作考虑。其他的几个问题我会做考虑,由于自动代码生成器的设计思想为共性的,重复的劳动和代码生成,由于每个人的开发习惯和方式也不尽相同,也不可能满足所有人的需要,做到面面俱到,所谓众口难调吗。现在只是做到了架构上和共性的基础性的代码生成,很多细节和具体业务还需要自己手工调试。不过在后期的开发中已考虑模版的模式来解决众口难调的问题。每个人自己根据需要设计自己的代码模版就可以了。
  回复  引用  查看    

#21楼  2005-12-25 00:31 Tadpale [未注册用户]
又献丑了,在获取数据库架构的时候可以试试 OleDbConnection.GetOleDbSchemaTable();
  回复  引用    

#22楼  2005-12-25 10:50 jjw [未注册用户]
出个net2.0的版本吧,我的装不了
  回复  引用    

#23楼  2005-12-25 15:00 poo [未注册用户]
希望支持.net2.0/vs2005
  回复  引用    

#24楼  2005-12-26 09:03 李天平 [未注册用户]
谢谢大家的关注,我会考虑出一个.net2.0的版本,和用来生成基于.net2.0的代码。请随时关注.
  回复  引用    

#25楼  2005-12-26 13:40 sukyboor [未注册用户]
呵呵,我也有一个类似的东西
可以互相交流交流
http://blog.csdn.net/sukyboor/archive/2005/12/10/548403.aspx
  回复  引用    

#26楼  2005-12-27 11:16 zhouwei [未注册用户]
大致看了一下,不错,提点小问题:
1。
public static void ExecuteSqlTran(string SQLStringList)
这个函数的实现很怪异。
为什么不用
public static void ExecuteSqlTran(params string[] SQLStringList)
来实现?
这样的话ExecuteSqlTran(string SQLString1,string SQLString2)
这个函数也可以不用写了。
2。DbManagerSQL这个类建议设置为可选用ms的sqlhelper实现,毕竟很多人用的是这个类。

  回复  引用    

#27楼  2005-12-27 13:01 李天平 [未注册用户]
@zhouwei ,谢谢你的建议,ExecuteSqlTran(string SQLString1,string SQLString2)其实就是public static void ExecuteSqlTran(string SQLStringList) 的一个特例,仅仅是为了方便自己平常只有两个语句的事务的省事,其实可以去掉的.
DbManagerSQL这个类是我根据很多数据访问类包括sqlhelper的一些思想总结的一个数据访问类.也并不是最好的,每个人都有自己数据访问类,完全可以替换成自己的就可以,由于DbManagerSQL是个抽象类,里面都是静态方法,所以在数据层里替换掉不会影响其他业务.我会在下个版本里提供几个新的数据访问类,同时做到代码生成时用户可以自定义设置使用自己的数据访问类.
  回复  引用    

#28楼  2005-12-30 16:24 avril2005 [未注册用户]
支持!研究中! P:
  回复  引用    

#29楼  2006-01-17 21:58 fengli [未注册用户]
用了一下,非常不错,谢谢你无私提供这么好的工具

里面显示的部分能够自动支持C#语法的加亮与缩进,不知道是不是用了什么控件,能分享吗?
  回复  引用    

#30楼  2006-01-30 14:57 peng liu [未注册用户]
非常感谢楼主提供这样的工具
  回复  引用    

#31楼  2006-02-13 21:17 诚信 [未注册用户]
能否提供源码,谢谢!
  回复  引用    

#32楼  2006-03-10 11:25 netx [未注册用户]
强烈楼要求给出源码:)
  回复  引用    

#33楼  2006-03-13 08:39 yzty [未注册用户]
能不能赶快做出VS2005版本的~
  回复  引用    

#34楼  2006-03-13 13:36 jj_smith [未注册用户]
我有自己的一个数据访问框架了。没法整合了不是?
整体觉得很好!就是对我不太适用,所以我用的是CodeSmith。不过不得不佩服作者。
  回复  引用    

#35楼  2006-06-11 22:13 noviceliu      
不错啊,收藏了。
  回复  引用  查看    

#36楼  2006-07-07 13:04 仰天一笑      
很牛,功德无量
  回复  引用  查看    

#37楼  2006-10-11 11:12 lzd [未注册用户]
我想知道, 当生成c#代码的时候,比如说我要是想要 add 方法具有一个属性, 这个是怎么实现的呢?
谢谢解答
  回复  引用    

#38楼  2006-10-25 04:35 3界 [未注册用户]
你好,我是一个。NET的新手,今天看到你的这个工具感觉蛮好。不过我觉得还是我自己先东西都搞懂了之后再用你的东西,不是更得心应手?再次感谢你。
  回复  引用    

#39楼  2006-10-27 10:27 君子 [未注册用户]
上个项目用作者的代码生成器作的,很成功,省了很多的时间与精力,在此向作者表示深深谢意。但一直比较困扰我的一个问题是,在这个框架之下的三层架构中,怎样进行对数据库事务的处理,也就是说框架中少了事务的传递,还请指教。
  回复  引用    

运行dodematicdemo,为什么提示"您没有权限进入本页"?
  回复  引用    

#41楼  2007-03-12 19:37 小鱼 [未注册用户]
牛人,谢谢你为大家提供了这么好的一个工具!
  回复  引用    

今天下载了一个试了一下,确实很好。很期待着你能支持.net 2.0 vs2005的版本快出来。还有源码。
  回复  引用    

#43楼  2007-05-02 23:50 ASDC [未注册用户]
首先祝愿李老师五一节日快乐!

很高兴能够发现这么一款软件,可是很遗憾的是我使用不了,始终是连接服务器失败,服务器/用户名/密码 我已经检查过,都是正确的,可是无论怎么样我还是连接失败,公司的机器也是连接失败,回家后在自己的电脑上试也是一样连接失败。

我用的是1.9.4和1.9.7版本,都是连接失败。

请李老师赐教,应该怎么设置才能够连接上,万分感谢!
  回复  引用    

#44楼  2007-05-03 02:09 周鹏      
这个东西不错, 不过我还是建议自己写CodeSmith模板, 我就是一直用CodeSmith。虽然开始麻烦点,但非常灵活,自己有主动权
  回复  引用  查看    

#45楼  2007-05-05 10:16 KOKO [未注册用户]
這麼好的東東為什么沒有源碼哦,可惜。
  回复  引用    

#46楼  2007-10-24 00:27 啊啊 [未注册用户]
我的也是啊,服务器配置的没有问题啊,前一阵子都能用,现在突然就不能用了!5555555555555
  回复  引用    

#47楼  2007-11-04 10:45 啦啦 [未注册用户]
有没有人能解决44楼的问题啊?
请知道的人能帮忙解决一下啦,我也遇到这个问题啦,叩谢啦!!!
  回复  引用    

@ASDC @啦啦 具体有其他什么错误提示吗?这个版本一直都没有做改动,请检查机器环境,用查询分析器测试连接是否正确,是否有防火墙之类的。如果以前可以连现在不可以,可能是机器环境什么地方发生了变化。
建议下载2.0版本使用,2.0要比1.97完善很多。

  回复  引用    


标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2006-07-09 09:33 编辑过


相关链接: