架构深渊

慢慢走进程序的深渊……关注领域驱动设计、测试驱动开发、设计模式、企业应用架构模式……积累技术细节,以设计架构为宗。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

CodeSmith生成的代码自动保存到文件[转]

Posted on 2009-07-21 11:40  chen eric  阅读(963)  评论(1编辑  收藏  举报
要将CodeSmith生成的代码自动保存到文件,则模板必须继承自OutputFileCodeTemplate这个类,并设置OutputFile属性值(文件路径)即可:
<%@ CodeTemplate Language="C#" TargetLanguage="C#" Inherits="CodeSmith.BaseTemplates.OutputFileCodeTemplate" %>
<%@ Property Name="NameSpace" Type="String" Category="Context" %>
<%@ Property Name="Table" Type="SchemaExplorer.TableSchema" Category="Context" %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Assembly Name="CodeSmith.BaseTemplates" %>
<%@ Import Namespace="SchemaExplorer" %>

<% this.OutputFile = "c:\\" + UCase(Table.Name) + "Info.cs"%>
<script runat="template">
//首字母小写
public string LCase(string text)
{
    
return text.Substring(0,1).ToLower() + text.Substring(1);
}
//首字母大写
public string UCase(string text)
{
    
return text.Substring(0,1).ToUpper() + text.Substring(1);
}
</script>
////////////////////////////////////////////////
// File: <% =UCase(Table.Name) %>Info.cs
// Description: Enter summary here after generation.
// Date: <% =DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") %>
// Web: http://www.mzwu.com/
////////////////////////////////////////////////
using System;
using System.Collections.Generic;
using System.Text;

namespace <% =NameSpace %>
{
    
public class <% =UCase(Table.Name) %>Info
    {
        
<%-- 私有字段 --%>
        
<% for(int i=0;i<Table.Columns.Count;i++) {%>
        
private <% =Table.Columns[i].SystemType.Name %> _<% =LCase(Table.Columns[i].Name) %>;
        
<% }%>
        
        
<%-- 属性 --%>
        
<% for(int i=0;i<Table.Columns.Count;i++) {%>
        
/// <summary>
        
/// <% =Table.Columns[i].Description %>
        
/// </summary>
        public <% =Table.Columns[i].SystemType.Name %> <% =UCase(Table.Columns[i].Name) %>
        {
            
get {return _<% =LCase(Table.Columns[i].Name) %>;}
            
set {_<% =LCase(Table.Columns[i].Name) %> = value;}
        }
        
<% }%>
        
        
<%-- 构造函数 --%>
        
/// <summary>
        
/// 构造函数
        
/// </summary>
        public <% =UCase(Table.Name) %>Info()
        {}
            
        
/// <summary>
        
/// 构造函数
        
/// </summary>
        <% for(int i=0;i<Table.Columns.Count;i++) {%>
        
/// <param name="<% =LCase(Table.Columns[i].Name) %>"><% =Table.Columns[i].Description %></param>
        <% }%>
        
public <% =UCase(Table.Name) %>Info
        (
        
<% for(int i=0;i<Table.Columns.Count;i++) {%>
        
<% =Table.Columns[i].SystemType.Name %> <% =LCase(Table.Columns[i].Name) %><% if(i<Table.Columns.Count-1)Response.Write(","); %>
        
<% }%>
        )
        {
            
<% for(int i=0;i<Table.Columns.Count;i++) {%>
            _
<% =LCase(Table.Columns[i].Name) %> = <% =LCase(Table.Columns[i].Name) %>;
            
<% }%>
        }
    }
}