• 自己写的代码生成器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打开

  • 相关阅读:
    洛谷 P1653 猴子 解题报告
    洛谷 P2024 [NOI2001]食物链 解题报告
    洛谷 P1966 火柴排队 解题报告
    洛谷 P1311 选择客栈 解题报告
    洛谷 P3959 宝藏 解题报告
    二进制枚举子集技巧
    洛谷 P1841 [JSOI2007]重要的城市 解题报告
    洛谷 P2324 [SCOI2005]骑士精神 解题报告
    vector-size
    ubuntu 更换软件源
  • 原文地址:https://www.cnblogs.com/lts8989/p/1658763.html
Copyright © 2020-2023  润新知