Posted on 2005-12-03 01:17
李天平 阅读(11518)
评论(52) 编辑 收藏
软件简介:
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]关闭程序时,程序会自动隐藏运行在任务栏,通过热键可以快速呼出窗口。
方便工作,娱乐生活,用智慧改变世界,用创造改变生活。其实,工作也很快乐!— 李天平
Feedback
老兄,你开了个好头啊,方便了自己也方便的大家!
另外,我想这款代码自动生成工具应该算是此方面功能最全的一个了,既然如此,为了促进代码自动生成器的发展,建议老兄建立一个代码自动生成器的开源项目,让兄弟们共同来完善这个项目,给代码自动生成工程添砖加瓦,岂不是更好!
我今天试着用了下,发现有这么几个问题:
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;
}
欢迎讨论^_^
非常感谢你为大家提供了一个很好的工具,我刚下载,粗略看了一下,好像存在这样一个问题:
如果表的主键是标识,增加数据时应该会出错。
我没有测试,不知我的看法是否正确。
@东海风 ,你说的“增加数据时”是在数据层的代码里增加数据是吗?
这个我的代码生成里有个选项GetMaxId(),如果选择它,是手动获得最大ID(即非标识主键的情况下)。如果不选择它,则会按标识主键处理,并不会对标识主键添加数据。所以,不会出现你说的问题。
用了下,不错,能开源吗?因为如果要用还是要自己根据需要增加生成代码的灵活性的,如果可以给份的话,请发到muse_er@163.com 谢谢。
感谢大家的关注,自从这个软件发布,有很多网友给予关注并且发来邮件,有提出需求的,有提供建议的,也有检测出bug的,如Kittow,王路,李韬,liangjinliang,小李程式,zfphere,东海风...等等,我很感谢大家!我也在大家的鼓励下,用业余时间来完善它,因为平常工作很忙,没有时间来专心做。有网友提出开源,让大家共同来完善这个项目,我也想过这个问题。由于目前这个软件的问题还很多,还有很多架构性的东西还没完善,所以,我想等这个软件形成一个稳当版本的时候,我会发布源码。让大家来共同探讨。希望大家给予支持!
看到你的回复了,开始我没注意这个选项可以影响主键的更新方式,不好意思了。
这个软件不错!期待着将来看到源码。
能开源吗?发一个源代码给我好吗>\
我的邮箱yishan116@163.com
非常好,以前我就用了你的1.5版的,有兄弟们的支持,编程变得不是那么枯燥了。真的很希望能看到源代码,在CSDN你也是顶顶有名呀。
不错,不错...功能确实很强大,我的代码生成器的后续功能可以参照开发了,呵呵
今天下载下来测试了。发现一些小问题:
1、我的表主键是字符类型,但生成时model是string类型,但在getmaxid反回却是int
2、DALfactory类的load处出现错误提示:找不到相应的程序集(其本上这个,是在公司测试的。现在在家里记不太清了。)。因为按你的提示是load一个命名空间。但实际上应该是一个程序集。是不是我有哪里没有搞对。
1.8Net代码自动生成器的DALFactory工厂标签怎么没有了,界面上的标签和帮助文件里的不一样,请指教.DALFactory工厂标签,在哪里,或者如何生成工厂类
多谢!
请大家注意,代码生成 菜单里的 设置选项。可以设置 代码生成的结构和数据层的代码方式。
◎张 宇 ,第一个问题我已解决。关于第二个问题确实如此,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
建议数据层能支持多种数据库,如Access、Oracle、Sybase 等。所以软件设计上可能需要添加元数据管理模块,与现有的表示层设计模块分开;数据层上则需要重新架构一套通用数据访问组件。
建议业务对象直接生成、采用强类型的 DataSet。
建议逻辑层能实现一次对多表的操作,如订购单-订购单明细的情况。
建议丰富表示层,至少要有完整的 Browse-Details 套页。控件的选择上应该可以更灵活,例如如存在主外键关系,可选择DropDownList、如字段在DotNet 中为DateTime类型,可选择日历弹板等。
一点拙见,不当之处还请各位包涵,呵呵。tadpale@sohu.com
@Tadpale ,谢谢你的建议,对于支持多种数据库,软件的架构设计中已作考虑。其他的几个问题我会做考虑,由于自动代码生成器的设计思想为共性的,重复的劳动和代码生成,由于每个人的开发习惯和方式也不尽相同,也不可能满足所有人的需要,做到面面俱到,所谓众口难调吗。现在只是做到了架构上和共性的基础性的代码生成,很多细节和具体业务还需要自己手工调试。不过在后期的开发中已考虑模版的模式来解决众口难调的问题。每个人自己根据需要设计自己的代码模版就可以了。
又献丑了,在获取数据库架构的时候可以试试 OleDbConnection.GetOleDbSchemaTable();
谢谢大家的关注,我会考虑出一个.net2.0的版本,和用来生成基于.net2.0的代码。请随时关注.
大致看了一下,不错,提点小问题:
1。
public static void ExecuteSqlTran(string SQLStringList)
这个函数的实现很怪异。
为什么不用
public static void ExecuteSqlTran(params string[] SQLStringList)
来实现?
这样的话ExecuteSqlTran(string SQLString1,string SQLString2)
这个函数也可以不用写了。
2。DbManagerSQL这个类建议设置为可选用ms的sqlhelper实现,毕竟很多人用的是这个类。
@zhouwei ,谢谢你的建议,ExecuteSqlTran(string SQLString1,string SQLString2)其实就是public static void ExecuteSqlTran(string SQLStringList) 的一个特例,仅仅是为了方便自己平常只有两个语句的事务的省事,其实可以去掉的.
DbManagerSQL这个类是我根据很多数据访问类包括sqlhelper的一些思想总结的一个数据访问类.也并不是最好的,每个人都有自己数据访问类,完全可以替换成自己的就可以,由于DbManagerSQL是个抽象类,里面都是静态方法,所以在数据层里替换掉不会影响其他业务.我会在下个版本里提供几个新的数据访问类,同时做到代码生成时用户可以自定义设置使用自己的数据访问类.
用了一下,非常不错,谢谢你无私提供这么好的工具
里面显示的部分能够自动支持C#语法的加亮与缩进,不知道是不是用了什么控件,能分享吗?
我有自己的一个数据访问框架了。没法整合了不是?
整体觉得很好!就是对我不太适用,所以我用的是CodeSmith。不过不得不佩服作者。
我想知道, 当生成c#代码的时候,比如说我要是想要 add 方法具有一个属性, 这个是怎么实现的呢?
谢谢解答
你好,我是一个。NET的新手,今天看到你的这个工具感觉蛮好。不过我觉得还是我自己先东西都搞懂了之后再用你的东西,不是更得心应手?再次感谢你。
上个项目用作者的代码生成器作的,很成功,省了很多的时间与精力,在此向作者表示深深谢意。但一直比较困扰我的一个问题是,在这个框架之下的三层架构中,怎样进行对数据库事务的处理,也就是说框架中少了事务的传递,还请指教。
运行dodematicdemo,为什么提示"您没有权限进入本页"?
今天下载了一个试了一下,确实很好。很期待着你能支持.net 2.0 vs2005的版本快出来。还有源码。
首先祝愿李老师五一节日快乐!
很高兴能够发现这么一款软件,可是很遗憾的是我使用不了,始终是连接服务器失败,服务器/用户名/密码 我已经检查过,都是正确的,可是无论怎么样我还是连接失败,公司的机器也是连接失败,回家后在自己的电脑上试也是一样连接失败。
我用的是1.9.4和1.9.7版本,都是连接失败。
请李老师赐教,应该怎么设置才能够连接上,万分感谢!
这个东西不错, 不过我还是建议自己写CodeSmith模板, 我就是一直用CodeSmith。虽然开始麻烦点,但非常灵活,自己有主动权
我的也是啊,服务器配置的没有问题啊,前一阵子都能用,现在突然就不能用了!5555555555555
有没有人能解决44楼的问题啊?
请知道的人能帮忙解决一下啦,我也遇到这个问题啦,叩谢啦!!!
@ASDC @啦啦 具体有其他什么错误提示吗?这个版本一直都没有做改动,请检查机器环境,用查询分析器测试连接是否正确,是否有防火墙之类的。如果以前可以连现在不可以,可能是机器环境什么地方发生了变化。
建议下载2.0版本使用,2.0要比1.97完善很多。
1.9我的也是提示连接失败.怎么连都连不上. 我们用的是vs2003开发,2.18的好像有范类型等好多不支持的东西吧~. 能不能帮忙看一下啊,李大哥!
我的email:qdseashore@163.com
以前一直用2.0版本,很不错。
请问针对vs2008 (.net3.5) 或者vs2010的版本何时出啊,期待!