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