发表评论
#2楼[
楼主]2006-11-25 21:27 |
@javafun
你说的是连不上数据库吗?
先用VS2005打开,重新编译后再运行,连接数据库看看
是的,数据库连接每次都是失败,我用sql 2005 express edition,你能写一下具体里面应该填写什么值吗? 用Auth那种模式
#4楼[
楼主]2006-11-25 21:48 |
@javafun
Auth模式是哪种模式啊-_-
1.如果是Windwos认证模式
mssql2005/[服务器]/[数据库]
2.如果是混合认证模式
mssql2005/[用户名]:[密码]@[服务器])/[数据库]
我下下来了,MS可用性很不好。当时试用了下,出现了好几个BUG,就再也没有进行下去了。
#7楼[
楼主]2006-11-25 22:42 |
@风云[匿名]
下不下来?
不能啊,需要登录的
#8楼[
楼主]2006-11-25 22:43 |
@cnodin
我在SQL Server2000下试了一下,感觉还可以的
最重要的是开源,对于喜欢研究代码生成的朋友也可以作为参考
只是用数据库的表生成对象模型吗?还有什么功能?
这个也太逊了,半年前左右我就看到有个国产的开源软件,有以上功能,并且能自动生成3层驾构和7层驾构的基本调用代码,并有VB,C#互转功能,还凑合,是新手不错的工作(有帮人广告的嫌疑.....).
不过我还是喜欢用我的工具,因为上面的工具有二个缺点.1:没有拓展性,代码都写死的,想在基础调用层增加功能是不可能的.2:不能体现关系数据库之间的关系,表与表之间的连接统统是依靠表中的某个字段的,例如员工表,部门表,在写员工表的时候不是写"Public 部门表 Depart";,而是写"Public int Depart",然后再用通过猥琐的判断什么的来搞,违反OOA设计原则.
我的工具嘛,用Power Design附带的功能,在建好模型之后,所有的底层有规律的代码都通过脚本自动生成,虽然可能写脚本难度稍大点,但没有以上缺点.至于具体应用样例,我会近期写于我的Blog里.
我看了一下原代码并且测试了一下感觉还不错,但给我的感觉是基于"模板"的,不是基于"模板引擎"的,跟基于模板引擎的CodeSmith相比差一定的距离,
看来风云兄提到的代码生成器的设计方案应该有7种再增加一种基于模板的,哈哈.
大家可以看风云兄的http://www.cnblogs.com/netcasewqs/archive/2006/11/14/560201.html 这篇文章介绍代码生成器的设计方案,非常全非常详细.
看了晚上风云兄写的 NDO - 快速入门http://www.cnblogs.com/netcasewqs/archive/2006/11/25/572259.html 附件里的代码,里面也有代码生成工具,是一个基于Velocity 模板引擎的,功能很强应该和楼主的相比不错上下或者更强,如果风云再把UI 做得像SmartCode那样好,并且Generator的接口做瘦一点更容易扩充那样就好了,希望国内也出来一个比较好的通用的代码生成工具来.........
#12楼[
楼主]2006-11-25 23:14 |
@Wisdom-zh
嗯,谢谢提供:)
#13楼[
楼主]2006-11-25 23:16 |
@目标年薪三千万
1.SmartCode我觉得代码生成思想还是不错,基于模版的代码生成,比起现在很多直接生成固定代码的工具来说好多了
2.开源,对于自己开发代码生成的朋友是一个不错的参考,现在写代码生成器的不少,好的不多:)
同时也希望看到你的介绍。
#14楼[
楼主]2006-11-25 23:18 |
@虫虫[匿名]
没错,基于模版的,当然不能跟CodeSmith不能相比了,呵呵
// 是CodeProject上的一个开源代码生成工具,并不是我的^_^
#16楼[
楼主]2006-11-25 23:31 |
@yunhuasheng
好东西大家分享:)
确实不错,我喜欢开源的东东,就算不用也能从中找些代码段出来学习学习.
#18楼[
楼主]2006-11-26 11:32 |
@小鬼[匿名]
同感!
#20楼[
楼主]2006-11-26 13:08 |
@Clark Chan
设置好属性后,需要先加载模版的程序集,然后才可以生成代码
模版引擎确实是正道! ——严重同意!
哈哈!我差一点被楼主“忽悠”了,基于“模板”的代码生成器,开玩笑而已,楼主不要建议呀!
@目标年薪三千万
说话有点过了,哈哈,SmartCode虽然很简单,但是从SmartCode里面可以折射出另外一种代码生成器的设计思想在里面,其思想是好的。
@虫虫[匿名]
虫虫兄分析的有一定的道理,NDO代码生成器和SmartCode 的功能差不多,但是 NDO代码生成器目前和 SmartCode相比在易用性和界面上差一点,
其思想和我NDO 中的NDOGenerator的代码生成器的框架有着很大的相似之处,具体谁好谁坏就不做比较了,仅仅说一下相似形和差异性而已。
都是在数据库元数据之上建立了元数据模型
都是基于模板插件的,可以灵活定制。但是NDO代码生成器的代码生成目前仅仅支持NDO的活动记录和普通的实体类以及monorail 和NDO相结合的活动记类,控制器,CRUD的视图代码。(除非用户自己更改VM模板)。SmartCode 的模板插件需要部署到GAC中,NDO的插件需要用配置文件配置。
SmartCode 的模板插件非常简单,也很灵活,你可以把代码输出逻辑完全写到插件中,也可以把代码输出逻辑和插件逻辑分开,这主要看用户怎样写插件了,关于该插件的写法的话题又非常多了,关于这方面的话题,虫虫兄推荐我的这篇文章也可以在这里用上http://www.cnblogs.com/netcasewqs/archive/2006/11/14/560201.html 。
从SmartCode身上NDO代码生成器可以吸收一点思想,NDO代码生成器的引擎骨架如虫虫说的瘦一点,不要局限于NDO和MONORAIL那么就可以做一个通用的代码生成器了。其实NDO代码生成器的骨架瘦身我以前都想到这个问题了,但是由于当时该创建生成器仅仅是为NDO和MONORAIL服务的,所以就肥了一点,哈哈,总之谢谢楼主给广大代码生成器爱好者提供了一个学习的例子!
#23楼[
楼主]2006-11-26 14:00 |
@风云
我下次应该对于“模版”加上高亮显示,呵呵
SmartCode对于爱好代码生成器的朋友来说的确是一个不错的例子
#24楼[
楼主]2006-11-26 14:00 |
@Clark Chan
为什么不做通用的呢?:)
#26楼[
楼主]2006-11-26 18:42 |
@风云
嗯,我看了一下,觉得有些问题
1.如果代码生成器只是针对具体的项目的话,那意义就不会很大,到最后可能鞍比马的代价还大。
2.使用别的代码生成器,我不认为学习成本有多高,CodeSmith功能够强大了吧?如果潜心研究,花一周时间学习足以应付项目中的代码生成,况且新版本的CodeSmith提供了大量的项目模版,稍加修改即可应用。
3.如果要开发自己的代码生成器,基于模版引擎的代码生成才是正道。
:)
@TerryLee
做通用的太要时间了,累:(
@风云
还是风云兄了解,哈哈:)
@TerryLee
1》CodeSmith实在太强大,虽然我没有成功生成一次代码。不过我不想依赖它,原因是它太牛,学习和维护的成本 对我的小项目实在不易(尤其维护代码还要靠CodeSmith~~~~)。
2》自己开发代码生成器,一定要开发基于模版引擎的才有点意义。
3》基于模版引擎的,很容易修改成通用的代码生成器(引擎出来了,只是时间的问题了)。时间啊,时间啊,为什么总这么快流逝呢~55555~~
ps:shoucao_66@兄已经在做基于模版引擎的 通用代码生成器了,支持他!
#29楼[
楼主]2006-11-26 19:08 |
@Clark Chan
:)
#31楼[
楼主]2006-11-26 19:35 |
@wang
嗯,CodeSmith收费后,很多人都转向了MyGeneration
#33楼[
楼主]2006-11-27 08:53 |
@KiddLee
:)
我编译都编译不过去,怎么搞得
提示我一个@call的一个错误。晕
SmartCode到底怎么用啊,搞了半天不会生成,呵呵
代码生成器引擎已经有了基本功能,有兴趣的朋友可以到我的论坛去下载,刚刚有了基本功能,等可以满足基本需求之后向大家公开源代码,希望大家支持。
很报歉我的域名忘了交费现在已经不能访问。我将在园子内安个家。
@Clark Chan
呵呵,有没有教程啊
怎么才能编译过去 ?
#42楼[
楼主]2006-11-27 17:24 |
@数据绑定者
教程?不会吧,呵呵
看看上面那篇文章就差不多了
在我这儿编译没问题的
MyGeneration是很不错的基于模板的通用代码生成器。网站上有大量的模板供下载,如果你有好的也可以提交。而且人家是免费的。
#44楼[
楼主]2006-11-30 19:27 |
@纶巾客
嗯,以前有很多使用CodeSmith的朋友都转向MyGeneration了
下载不了,能给我发一个么?
xiedan_79@yahoo.com.cn
下不到,我是教育网,总是"导航已取消",楼主可以给我发一个么,zyue225 @ 163.com谢谢了哈
虽然我有codesmith和注册机,不过就是用不来,正在看楼主的那个教程
我想做一个应对专门业务的代码生成器
不知道哪儿有开源的项目可以提供参考??
我也想做个源码生成器
基于模板的
而且是与数据库关联的
我同事做了一个
但是我不会
我最不会的那部是不知道如何从模板转换成代码那步
##系统的变量:DatabaseName,TableName,Columns,ColumnTypeUtility,NowTime
#set($package = "Com.CodeTools.Model")
#set($ProjectName = "×××××××")
#set($ModelName = "××××××")
#set($OrderBy = "ID asc")
#set($FirstPK = -1)
#set($FirstID = -1)
#foreach( $column in $Columns )
#if ($column.PrimaryKey && $FirstPK == -1)
#set($FirstPK = $velocityCount)
#end
#if ($column.Identifier && $FirstID == -1)
#set($FirstID = $velocityCount)
#end
#end
#parse("macro-CSTypes.txt")#parse("macro-SqlDbTypes.txt")#parse("macro-SqlDBTypesLength.txt")
USE ${DatabaseName}
/******************************************************************
* 表名:${TableName} ${ModelName}
* 时间:${NowTime}
******************************************************************/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[${TableName}_Exists]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[${TableName}_Exists]
GO
这个是他模板的一部分
我不知道他怎么区分模板的文本部分
最上面的就是申明变量
后面的这段
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[${TableName}_Exists]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[${TableName}_Exists]
GO
就是生成语句的模板
有时候还会有循环
例如下面这段的foreach
------------------------------------
--用途:增加新的${ModelName}记录
--项目名称:${ProjectName}
--说明:
--时间:${NowTime}
------------------------------------
CREATE PROCEDURE ${TableName}_ADD
#foreach( $column in $Columns )
@${column.Name} ${column.ColumnType}#SqlDBTypesLength("$column.ColumnType" $column.Length $column.NumericPrecision $column.NumericScale)#if($column.Identifier)
output #end
#if($velocityCount < $Columns.Count)
,
#end
#end
模板以txt文本的形式储存
我就不知道怎么将文本以代码的形式运行
而且区分代码部分和模板部分
不知道楼主在这方面有什么建议??
#54楼[
楼主]2008-11-17 23:23 |
@天下88
我想这个应该不难吧。。。
#56楼[
楼主]2008-11-19 09:30 |
@wayne.lew
我这儿没有代码。
呵呵,楼主很积极噢,
好像只要有人留言,你都会回复,真是伟大 。
这些东西我现在都不懂啊,
很郁闷。
真羡慕。