由於在項目中經常要會用到數據庫的 CRUD 操作(增、刪、改、查),而且還使用的是orm 框架將數據庫表名和表中的的字段映射成相應的類屬性。如果把大量的時間用到手工輸入數據庫表中的字段,除了能練習打字速度外,對軟件工程師來說,對編程能力的提高似乎沒有什麼意義,爲了提高開發效率,節省時間,我工作之餘花了大量的時間來學習研究CodeSmith 在生成數據庫表中字段的模板的設計,在此記下自己的 CodeSmith 學習筆記。
這是新建的一個 CsharpTemplate.cst 模板文件的內容
<%--
Name:
Author:
Description:
--%>
<%@ Template Language="C#" TargetLanguage="Text" %>
<%@ Property Name="SampleStringProperty" Default="SomeValue" Type="System.String" %>
<%@ Property Name="SampleBooleanProperty" Default="True" Type="System.Boolean" %>
My static content here.
My dynamic content here: "<%= SampleStringProperty %>"
Call a script method: <%= SampleMethod() %>
<% if (SampleBooleanProperty) { %>
My conditional content here.
<% } %>
<script runat="template">
// My methods here.
public string SampleMethod()
{
return "Method output.";
}
</script>
開頭的是註釋, 表示文件的作者,名稱和功能描述
接下來 <%@ Template Language="C#" TargetLanguage="Text" %> 就是模板的說明內容
<%@ Property Name="SampleStringProperty" Default="SomeValue" Type="System.String" %>
這是屬性類型的設置 它會生成一個 System.String 類型的字段 默認的值被設置成 SomeValue Name是屬性模板的名稱,這個可以自命名, 模板的東西通常會放在 <% %> 裏面,是成對出現的。比如要輸出 System.String 類型的值,就要這麼寫
My dynamic content here: "<%= SampleStringProperty %>", 注意在<%> 前有個=號, 前面的 ”My dynamic content here“ 完全可以根據實際的需要來修改
在 模板中寫代碼片段時,也是放在 <%> 中的, 像例子中的這個 <% if (SampleBooleanProperty) { %>
My conditional content here.
<% } %> 是一個 if語句判斷, 如果是 true ,就會輸出 My conditional content here.,注意: 花括號{ 也要放在 <%>內 花括號與花括號不能直接相鄰,如果是 一個函數, 則要放在 <script runat="template"> </script>中, 此時的花括號可以相鄰,書寫方式同在C#中的 書寫方式一致。
這段代碼會生成這樣一個輸出:
My static content here.
My dynamic content here: "SomeValue"
Call a script method: Method output.
My conditional content here.