大家好,首先我要声明的是:本人不曾对CodeSmith有过任何偏见,相反,在以后我做的几个项目中,
曾大量使用它来生成一些代码。但是由于本人最近在研究IOC类型框架Castle时,为了生成符合我要求的
数据表类型CS文件,发现去定义自己的CodeSmith模版太麻烦了,因此动了使用网页ASPX生成CS文件的念
头[可能有点BT],但是在完成这个程序后发现,这个东西非常好用。虽然目前只能进行SQLSERVER2000数
据库文件生成,但相信扩展到其它数据库类型并不难,但由于本人精力有限,目前只能做到此步。相信
有使用ORACLE,MYSQL等数据库的朋友完善它。
         闲话少叙,马上开说。

         如何找出当前数据库中的所有表字段和类型,有许多的方法,本人只用最常用的SQL语句来完成,如
下:

  SELECT 表名=case when a.colorder=1 then d.name else '' end,
     表说明=case when a.colorder=1 then isnull(f.value,'') else '' end,
    字段序号=a.colorder,
     字段名=a.name,
      标识=case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end,
      主键=case when exists(SELECT 1 FROM sysobjects where xtype='PK' and name in ( SELECT name FROM sysindexes WHERE indid in( SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid ))) then '√' else '' end,
      类型=b.name,
   占用字节数=a.length,
      长度=COLUMNPROPERTY(a.id,a.name,'PRECISION'),
    小数位数=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
     允许空=case when a.isnullable=1 then '√'else '' end,
     默认值=isnull(e.text,''),
    字段说明=isnull(g.[value],'')FROM syscolumns a left join systypes b on a.xtype=b.xusertype inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties' left join syscomments e on a.cdefault=e.id left join sysproperties g on a.id=g.id and a.colid=g.smallid left join sysproperties f on d.id=f.id and f.smallid=0 order by a.id,a.colorder

得到了相应的信息之后,开始生成CS文件,相关函数代码如下:

 

  1摆脱CodeSmith,使用页面生成.CS文件 //写入接口文件内容
  2摆脱CodeSmith,使用页面生成.CS文件        public string InterFaceFileContent(string TableName,string TableField)
  3
代码写的比较乱,没时间整理,望大家见谅。摆脱CodeSmith,使用页面生成.CS文件
 源代码

相关文章: