這兩天在看CodeSmith文檔,因為官方文檔在讀數據庫這一篇使用的是VB寫的,對於C#使用者來說看起來很不方便,所以我改成C#的,順便寫下我自己的使用過程。
首先,要使用CodeSmith連接數據庫,需要引入
<%@ Assembly Name="SchemaExplorer" %> <%@ Import Namespace="SchemaExplorer" %>
假如需要讀取某張表的數據,需要定義一個屬性指示這張表
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context" %>
當然還可以加入一些自定義的配置,例如命名空間、作者什么的
<%@ Property Name="Author" Type="String" Description="作者" %> <%@ Property Name="NameSpace" Type="String" Description="命名空間" %>
編譯過后會在屬性窗口出現可以設置的屬性
SourceTable屬性默認為空, 點擊右側的那個三個點按鈕,會彈出對話框
點擊Data Source右側的那個兩個點按鈕
點Add按鈕新增一個數據庫連接
輸入Name,Provider Type選擇SqlSchemaProvider,點擊Connection String 右側的三點按鈕
輸入Server Name,可以選擇Windows身份認證或者SQL Server 密碼認證,然后選擇一個數據庫,最后點擊OK,接着再點OK,回到選擇表界面,下拉框中選擇剛加入的數據庫,會自動列出該庫中的所有表
選中一張表后,回到屬性界面,輸入其它屬性,寫入模板代碼,然后點Generate生成吧。
附上模板代碼:
<%@ Template Language="C#" TargetLanguage="C#" %> <%@ Assembly Name="SchemaExplorer" %> <%@ Import Namespace="SchemaExplorer" %> <%@ Property Name="Author" Type="String" Description="作者" %> <%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="數據庫" %> <%@ Property Name="NameSpace" Type="String" Description="命名空間" %> // // Created: <%=DateTime.Now.ToShortDateString() %> // Author: <%=Author %> // using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace <%=NameSpace %> { public class <%=SourceTable.Name %> { <%for(int i=0;i<SourceTable.Columns.Count;i++) { %> public <%=SourceTable.Columns[i].SystemType %> <%=SourceTable.Columns[i].Name %>{get;set;} <% } %> } }