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

发布于 2022-08-30 03:07:12 字数 8023 浏览 14 评论 0

ltscode代码生成器,本人DIY的。
    写了一些常规模式的网站后发现代码生成器的用处,但使用网上的代码生成器生成的代码大多不符合我的书写格式,而那些代码生成器的自定义模板功能大多没有(也许是我笨,没找到),遂DIY。
    1、使用方法:打开代码生成器  ltscodenew.exe。首先自动进入连接数据库窗口,如下图所示

login.gif (13 KB, 下载次数: 9)

下载附件

2010-12-19 18:07 上传



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

main.gif (9.59 KB, 下载次数: 8)

下载附件

2010-12-19 18:07 上传


      从左边树的“表”节点中右键单击某一个表,右键菜单为软件所加载的所有代码自定义生成模板。我已经为制作好了三个模板(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"
xmlnssl="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&quot;
    //获取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的系统做多了代码生成器会经常用到,而且在网上一搜一大堆,所以得出结论:代码生成器的技术很简单。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文