自己写的代码生成器ltscode2.0

    ltscode代码生成器,本人DIY的。

    写了一些常规模式的网站后发现代码生成器的用处,但使用网上的代码生成器生成的代码大多不符合我的书写格式,而那些代码生成器的自定义模板功能大多没有(也许是我笨,没找到),遂DIY。

    1、使用方法:打开代码生成器  ltscodenew.exe。首先自动进入连接数据库窗口,如下图所示

 

 

选择相依的服务器名(mssql的服务器名或ip地址)和身份认证方式,点击“测试连接”按钮,如正确登陆mssql服务器,在“数据库”下拉列表中选择需要的数据库。点击“确定”按钮进入程序主界面。

 

      从左边树的“表”节点中右键单击某一个表,右键菜单为软件所加载的所有代码自定义生成模板。我已经为制作好了三个模板(Bll、model、proc),模板的制作过程下面会有介绍。选择某个模板后会按照表结构生成相应的c#代码,显示在右边的输入框中。

点击“连接数据库”按钮将会进入刚才的连接数据库窗口重新连接其他数据库。“刷新”按钮用来刷新左边树形结构显示的数据库结构。“输出所有代码到文件夹”按钮是将所有的表分别套用所有的模板,生成代码到用户选定的文件夹。

2、模板制作方法:(以测试表users和model模板为例介绍整个生成过程)

  (1)、有表结构生成XML。

            stu表结构:userid int、username varchar(15)、userpwd varchar(15)

            生成的XML如下:

<?xml version="1.0" encoding="gb2312"?>
<root>
  <table>users</table>
  <column>
    <colname>userid</colname>
    <typename>int</typename>
    <length>4</length>
    <isnullable>0</isnullable>
    <description></description>
    <defaultvalue></defaultvalue>
    <primarykey>1</primarykey>
  </column>
  <column>
    <colname>username</colname>
    <typename>varchar</typename>
    <length>15</length>
    <isnullable>0</isnullable>
    <description></description>
    <defaultvalue></defaultvalue>
    <primarykey>0</primarykey>
  </column>
  <column>
    <colname>userpwd</colname>
    <typename>varchar</typename>
    <length>15</length>
    <isnullable>0</isnullable>
    <description></description>
    <defaultvalue></defaultvalue>
    <primarykey>0</primarykey>
  </column>
</root>

  (2)、通过XML与模板XSL文件生成临时代码字符串。

请将你自定义的XSL文件放在软件目录下的“Template”目录下

      model的XSL文件如下:

<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="/">
      <xsl:variable name="tablename" >
        <xsl:for-each select="root">
          <xsl:value-of select="table"/>
        </xsl:for-each>
      </xsl:variable>
using System;
namespace Model
{
  /// <summary>
  /// 实体类<xsl:copy-of select="$tablename" /> 。(属性说明自动提取数据库字段的描述信息)
  ///</summary>
  [Serializable]
  public class <xsl:copy-of select="$tablename" />
  {
      public <xsl:copy-of select="$tablename" />()
      {}
      #region Model
      <xsl:for-each select="root/column">
      private <xsl:value-of select="typename"/> _<xsl:value-of select="colname"/>;         
      </xsl:for-each>
      <xsl:for-each select="root/column">
      /// <summary>
      /// <xsl:value-of select="description"/>
      /// </summary>
      public <xsl:value-of select="typename"/>
<xsl:text> </xsl:text>
      <xsl:value-of select="colname"/>
      {
        set {_<xsl:value-of select="colname"/>=value;}
        get {return _<xsl:value-of select="colname"/>;}
      }
      </xsl:for-each>
      #endregion Model

    }
}
  </xsl:template>

</xsl:stylesheet>

 

以上两个步骤的操作已经集成在LtsBll.dll文件的Tools.CreateCodeByXml函数中。

  (3)、再使用自定义的dll文件加工临时代码,最后生成可使用的代码。

自定义的dll文件中的加工临时代码的函数同一使用函数名CreateCode。model.cs代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ltsmodel;
using LtsBll;


namespace model
{
    public class model
    {
        /// <summary>
        ///
        /// </summary>
        /// <param name="tableName">表名</param>       
        public string CreateCode(string tableName)
        {

    //通过表名和xsl生成临时代码
            string StrReturn = Tools.CreateCodeByXml(tableName, "model.xsl");

    //获取sql字段类型和C#变量类型对照表
            List<Ltsmodel> txtmodel= Tools.GetDbToCS();
            //将临时代码中的sql字段类型替换成C#变量类型
            StrReturn=Tools.StringReplace(StrReturn, txtmodel);
            return StrReturn;
        }
    }
}
需要注意:LtsBll.dll与ltsmodel.dll在软件目录下。制作好自己的dll文件后可直接拷贝到软件目录下的“dll”文件夹下或者在软件中右击表的菜单中选择“添加模板dll”。如果您编写的dll文件没有错误但是加载后报错找不到相应的函数,可将LtsBll.dll文件复制到dll目录下,用您的模板生成一遍,关闭软件删除dll目录下的LtsBll.dll文件即可。对于此错误,我一直找不到原因,希望热心网友能解决此问题。

 

3、写在最后:以前还是学生的时候感觉《图书馆管理系统》经常用到,技术简单,所以在网上一搜一大堆;现在工作了感觉类似CMS的系统做多了代码生成器会经常用到,而且在网上一搜一大堆,所以得出结论:代码生成器的技术很简单。

 

可执行文件:/Files/lts8989/ltscode.rar

源码:/Files/lts8989/ltscodenew_Source.rar  源码请使用vs2008打开

posted @ 2010-01-28 21:49  lts8989  阅读(2748)  评论(16编辑  收藏  举报