图解CodeSmith使用和实用教程一 - 入门和生成MIS项目实体层代码

    CodeSmith,也就是传说中的那个代码生成工具。

    下载CodeSmith 6.5,可到我网盘下,链接在底部。

一 安装

1 解压,点击安装;


图解CodeSmith使用和实用教程一 - 入门和生成MIS项目实体层代码_第1张图片


2 协议;

图解CodeSmith使用和实用教程一 - 入门和生成MIS项目实体层代码_第2张图片


3 选择目录;

图解CodeSmith使用和实用教程一 - 入门和生成MIS项目实体层代码_第3张图片


4 一路next完成。

图解CodeSmith使用和实用教程一 - 入门和生成MIS项目实体层代码_第4张图片


5 解压Crack目录下的内容;

图解CodeSmith使用和实用教程一 - 入门和生成MIS项目实体层代码_第5张图片


6 执行上一步解开的东西的安装,必须不要打开CodeSmith,VS20XX; 安装后看下开始菜单;如下图;已经装好;

图解CodeSmith使用和实用教程一 - 入门和生成MIS项目实体层代码_第6张图片


二 用CodeSmith生成MIS项目的实体层代码

    实体层代码,就是对数据库表的映射部分的代码,如果表多一些的话,手写是个相当大的工作量;

1  进入CodeSmith,先测试下;在右侧选择一个自带示例模板,内容如下图;

图解CodeSmith使用和实用教程一 - 入门和生成MIS项目实体层代码_第7张图片


2 点击 Run;生成该CST模板的生成的代码如下图;

图解CodeSmith使用和实用教程一 - 入门和生成MIS项目实体层代码_第8张图片


3 写生成项目实体层的模板代码

test.cst:

<%@ CodeTemplate Inherits="CodeTemplate" Language="C#" TargetLanguage="Text" Description="NetTiers main template." Debug="True" ResponseEncoding="UTF-8"%>


<%-- 注册实体层Entity模板 --%>
<%@ Register Name="EntityTemplate" Template="D:\WinformTier\Entity.cst" MergeProperties="Flase" ExcludeProperties=""%>


<%-- 数据库 --%>
<%@ Property Name="SourceDatabase" Type="SchemaExplorer.DatabaseSchema" DeepLoad="True" Optional="False" Category="01. Getting Started - Required" Description="Database that the tables views, and stored procedures should be based on. IMPORTANT!!! If SourceTables and SourceViews are left blank, the Entire Database will then be generated."%>


<%
//创建实体层Entity类
this.GenerateEntityClasses();

Debug.WriteLine("OK");
%>

<script runat="template">
    //生成实体Entity类
private void GenerateEntityClasses()
    {
        CodeTemplate Template =new EntityTemplate();
        foreach(TableSchema table in this.SourceDatabase.Tables)
        {
            string FileDirectory = OutputDirectory +"\\"+ table.Name +".cs";
            //生成模板
            Template.SetProperty("Table",table);
            //文件输出
            Template.RenderToFile(FileDirectory,true);
            Debug.WriteLine(FileDirectory +" 创建成功.");
        }
    }
</script>


<script runat="template">
    //解决方案输出路径
private string Directory = String.Empty;
    
    [Editor(typeof(System.Windows.Forms.Design.FolderNameEditor), typeof(System.Drawing.Design.UITypeEditor))] 
    [Optional, NotChecked]
    [DefaultValue("")]
    public string OutputDirectory 
    { 
        get
        {
            return Directory;
        }
        set
        {
            if (value.EndsWith("\\")) value = value.Substring(0, value.Length -1);
            Directory = value;
        } 
    }
</script>

Entity.cst

<%@ CodeTemplate Inherits="CodeTemplate" Language="C#" TargetLanguage="Text" Description="NetTiers main template." Debug="True" ResponseEncoding="UTF-8"%>

<%@ Assembly Name="SchemaExplorer"%>
<%@ Import Namespace="SchemaExplorer"%>

<%@ Property Name="Table" Type="TableSchema" DeepLoad="True" Optional="False" Category="01. Getting Started - Required" Description="Database that the tables views, and stored procedures should be based on. IMPORTANT!!! If SourceTables and SourceViews are left blank, the Entire Database will then be generated."%>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Entity
{
publicpartialclass<%= Table.Name%>
{
<%foreach(ColumnSchema col in Table.Columns){ %>
public <%= col.DataType %> <%= col.Name %> { get;set; }
<% } %>
}
}

上述代码中的“D:\WinformTier\Entity.cst”,可改为自己保存cst的路径;

另外还要添加数据库连接;添加了之后CodeSmith会自动读出数据库中的表的名字和字段名,然后生成代码;

添加数据源如下图,跟VS中类似,此处选择的是SqlSever架构提供者,如果使用别的数据库略有不同;

图解CodeSmith使用和实用教程一 - 入门和生成MIS项目实体层代码_第9张图片

在右侧属性面板选中添加的数据源和选择输出目录;

图解CodeSmith使用和实用教程一 - 入门和生成MIS项目实体层代码_第10张图片


然后点击Run,Build成功;看下输出目录;一堆的实体层代码文件已经生成;真的是好多好强大啊;打开一个看一下,没什么问题,如下图所示。看来资本主义确实有值得我们学习的地方,

图解CodeSmith使用和实用教程一 - 入门和生成MIS项目实体层代码_第11张图片

codesmith 6.5; 上述模板代码;Sql Server示例数据库AdventureWorks_Data.mdf;可到俺网盘下载;

codesmith下载:

http://pan.baidu.com/s/1o63dEHW


示例数据库:

http://pan.baidu.com/s/1sjynMGX


模板代码:

http://pan.baidu.com/s/1o6n4Byy



你可能感兴趣的:(.net,vs,代码生成,entity,codesmith)