1.先建立一个生成单个表的实体的模板
<%--
Name:
Author:
Description:
--%>
<%@ CodeTemplate Language="C#" TargetLanguage="C#" Src="" Inherits="OutputFileCodeTemplate" Debug="False" Description="Template description here." %>
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context" Optional="True" Description="the table name" %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Import Namespace="SchemaExplorer" %>
<%@ Assembly Name="CodeSmith.BaseTemplates" %>
<%@ Import Namespace="CodeSmith.BaseTemplates" %>
<%@ Assembly Name="CodeSmith.CustomProperties" %>
<%@ Import Namespace="CodeSmith.CustomProperties" %>
namespace Jack.CodeSmith.Test
{
public class <%=this.SourceTable.Name%>Model
{
public <%=this.SourceTable.Name%>()
{
//ToDo:
}
<%for(int i=0; i<this.SourceTable.NonPrimaryKeyColumns.Count;i++){%>
private <%=GetCSharpVariableType(this.SourceTable.NonPrimaryKeyColumns[i])%> m<%=this.SourceTable.NonPrimaryKeyColumns[i].Name%>;
<%}%>
<%for(int i=0; i<this.SourceTable.NonPrimaryKeyColumns.Count;i++)
{
int namelength=this.SourceTable.NonPrimaryKeyColumns[i].Name.Length;
string colName=this.SourceTable.NonPrimaryKeyColumns[i].Name;%>
public <%=GetCSharpVariableType(this.SourceTable.NonPrimaryKeyColumns[i])%> <%=colName.Substring(0,1).ToUpper()%><%=colName.Substring(1,colName.Length-1)%>
get {return m<%=this.SourceTable.NonPrimaryKeyColumns[i].Name%>;}
set {m<%=this.SourceTable.NonPrimaryKeyColumns[i].Name%>=value;}
<%}%>
}
}
<script runat="template">
// Override the OutputFile property and assign our specific settings to it.
[FileDialog(FileDialogType.Save, Title="Select Output File", Filter="C# Files (*.cs)|*.cs", DefaultExtension=".cs")]
public override string OutputFile
{
get {return base.OutputFile;}
set {base.OutputFile = value;}
}
</script>
<script runat="template">
public string GetCSharpVariableType(ColumnSchema column)
{
if (column.Name.EndsWith("TypeCode")) return column.Name;
switch (column.DataType)
{
case DbType.AnsiString: return "string";
case DbType.AnsiStringFixedLength: return "string";
case DbType.Binary: return "byte[]";
case DbType.Boolean: return "bool";
case DbType.Byte: return "byte";
case DbType.Currency: return "decimal";
case DbType.Date: return "DateTime";
case DbType.DateTime: return "DateTime";
case DbType.Decimal: return "decimal";
case DbType.Double: return "double";
case DbType.Guid: return "Guid";
case DbType.Int16: return "short";
case DbType.Int32: return "int";
case DbType.Int64: return "long";
case DbType.Object: return "object";
case DbType.SByte: return "sbyte";
case DbType.Single: return "float";
case DbType.String: return "string";
case DbType.StringFixedLength: return "string";
case DbType.Time: return "TimeSpan";
case DbType.UInt16: return "ushort";
case DbType.UInt32: return "uint";
case DbType.UInt64: return "ulong";
case DbType.VarNumeric: return "decimal";
default:
{
return "__UNKNOWN__" + column.NativeType;
}
}
}
</script>
下面是代码格式化后的截图
2. 再建立一个模板,调用刚才建立的子模板
<%--
Name:
Author:
Description:
--%>
<%@ CodeTemplate Language="C#" TargetLanguage="C#" Inherits="" Description="This is my first data temple" %>
<%@ Property Name="SourceDatabase" Type="SchemaExplorer.DatabaseSchema" Category="" Description="Database containing the tables." %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Import Namespace="SchemaExplorer" %>
<%@ Assembly Name="CodeSmith.BaseTemplates" %>
<%@ Import Namespace="CodeSmith.BaseTemplates" %>
<%@ Assembly Name="CodeSmith.CustomProperties" %>
<%@ Import Namespace="CodeSmith.CustomProperties" %>
<%@ Assembly Name="System.Design" %>
<%@ Import Namespace=" System.Design" %>
<%@ Register Name="SubTemplate" Template="C:\CodeSmithStudy\GenerateModel.cst" MergeProperties="True" ExcludeProperties="" %>
<%
for(int i=0; i<this.SourceDatabase.Tables.Count;i++)
{
SubTemplate mySub=new SubTemplate();
mySub.OutputFile=this.OutputDirectory+@"\"+this.SourceDatabase.Tables[i].Name+"Model.cs";
mySub.SourceTable=this.SourceDatabase.Tables[i];
mySub.Render(Response);
}
%>
<script runat="template">
private string _outputDirectory = @"c:\codesmithstudy";
[Editor(typeof(System.Windows.Forms.Design.FolderNameEditor), typeof(System.Drawing.Design.UITypeEditor)),
Category("Custom"), Description("Output directory.")]
public string OutputDirectory
{
get {return _outputDirectory;}
set {_outputDirectory= value;}
}
</script>
格式化后的截图
3. 从属性窗口选择要保存到的文件夹和数据库
4.运行,得到如下结果
5. 模板下载
http://www.cnblogs.com/Files/cnblogsfans/template.rar
分享到:
相关推荐
在软件开发过程中,尤其是在与数据库交互的业务逻辑层,实体类的创建是一项繁琐且重复的工作。 Codesmith是一款强大的代码生成工具,它允许开发者通过定制模板来自动生成代码,极大地提高了开发效率。本篇文章将详细...
根据提供的文件信息,我们可以深入探讨如何使用 Codesmith 来生成三层架构中的数据访问层(DAL)。三层架构是一种常见的软件架构模式,它将应用程序分为三个主要的逻辑层:表示层、业务逻辑层和数据访问层。这种分层...
里面是CodeSmith根据数据库表生成实体类的例子, 数据库是mysql,生成的是java文件, codesmith的mysql链接字符串为: Database=test;Data Source=127.0.0.1;User Id=root;Password=root;port=3306
Codesmith,作为一款强大的代码生成工具,能够帮助开发者快速构建符合五层架构的系统。本文将详细解析codesmith如何生成五层架构以及五层架构的各个组成部分。 首先,五层架构通常包括以下五部分:表现层...
【codesmith生成实体类、数据层类、和存储过程】是一种高效的软件开发工具,它能够自动化地根据数据库结构自动生成对应的C#代码,包括实体类(Entity Class)、数据访问层(Data Access Layer)类以及与数据库交互的...
总的来说,"C#版 -- 实用性CodeSmith模板(自动生成三层架构底层代码)"是一个高效工具,它简化了三层架构应用程序的开发过程,使得开发者可以更加专注于业务需求和创新,而不用在基础代码上花费过多时间。...
CodeSmith是一款强大的代码生成工具,尤其适用于快速生成数据库相关的实体模型、数据访问层以及业务逻辑层代码。在本文中,我们将深入探讨如何解决在使用CodeSmith 8.0时遇到的MySQL实体没有字段注释和表注释的问题...
CodeSmith是一款著名的代码生成器,它能够根据数据库模式自动生成.NET代码,包括实体类、数据访问层(DAL)和业务逻辑层(BLL)。然而,有时我们可能需要自定义生成的代码,例如为MySQL实体添加字段注释和表注释,以...
CodeSmith支持自定义模板,开发者可以根据自己的需求创建模板来生成代码,包括实体类、数据访问接口、业务逻辑接口及其实现、以及表示层的控件等。这使得在ASP.NET中实现三层架构的代码生成变得轻松快捷。 1. **...
UI层的代码生成通常不在CodeSmith的直接控制下,但CodeSmith生成的BLL和DAL接口可以帮助开发者更轻松地构建这一层。 在压缩包文件“外键以实体实现的在三层”中,我们可以推断CodeSmith生成的代码可能考虑了数据库...
Codesmith是一款基于.NET平台的代码生成工具,它通过读取数据库或其他数据源的信息,自动生成符合特定设计模式的源代码,如实体类、数据访问层、业务逻辑层等。它的核心优势在于可以根据不同的项目需求定制模板,...
在本案例中,"CodeSmith 生成简单三层和SqlHelper的模板"指的是使用CodeSmith创建了一个能够自动生成三层架构(数据访问层、业务逻辑层、表示层)以及SqlHelper类的模板。 三层架构是一种常见的软件设计模式,主要...
"普通 codesmith三层代码生成模板" 是一个专为C#开发者设计的工具,用于自动化生成代码,特别是在开发三层架构的应用程序时。三层架构通常包括表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和...
"codeSmith自动生成三层中的代码"这一主题表明我们将探讨如何利用CodeSmith来生成软件架构中的三层架构代码,包括表示层、业务逻辑层和数据访问层。 首先,三层架构是一种常见的软件设计模式,它将应用程序分为三个...
里面是CodeSmith根据数据表生成实体类的例子 用的是mysql数据库 链接字符串为: Database=test;Data Source=127.0.0.1;User Id=root;Password=root;port=3306
CodeSmith是一款强大的代码生成工具,尤其在快速构建企业级应用的三层架构方面有着显著的优势。三层架构是一种常见的软件设计模式,它将应用程序分为表现层(Presentation Layer)、业务逻辑层(Business Logic ...
总结来说,CodeSmith .NET 2.0三层自动生成模板是一个强大的开发辅助工具,它可以帮助开发者快速构建符合三层架构的项目,提高开发效率,并保持代码的结构清晰和易于维护。通过熟练掌握和利用CodeSmith,开发者可以...
CodeSmith是一款强大的代码生成工具,能够自动生成诸如数据访问层(DAL)、业务逻辑层(BLL)以及表现层(UI)的代码,极大地减少了程序员手动编写重复代码的工作量。 三层架构是一种常见的软件设计模式,它将应用...
CodeSmith是一款强大的代码生成工具,尤其在快速构建C#应用程序时非常有用。它通过使用模板语言,能够自动生成包括实体类、数据访问层(DAL)和业务逻辑层(BLL)在内的各种代码,大大提高了开发效率,减少了重复...
CodeSmith自动生成实体类,数据访问层/.................