CodeSmith圖形介面操作
參考:
https://www.cnblogs.com/kissdodog/archive/2013/04/16/3023387.html
先從用法開始:以NHibernate模板生成為例:
1、啟動CodeSmith,介面如下:
2、匯入模板,點選左上角的資料夾一樣的按鈕,開啟檔案選擇框,選擇模板檔案所在資料夾:
3、回到主介面就可以看到,模板檔案已經被新增進來了。
4、展開資料夾,看到有個.cst字尾的檔案,雙擊它,就會展開如下所示介面:
解釋一下個選項的意思:
OutputDirectory:生成的程式碼檔案輸出到的資料夾。
SourceDataBase:資料庫名稱
Assembly:就是生成程式碼檔案的程式集。
ForceId:是否生成主鍵,如果選中,當表中沒有主鍵時會報錯。
NameSpace:生成程式碼檔案的名稱空間。
RemoveTablePrifix:要去除的表名字首。
5、選擇資料庫
在上面的幾個選項中,經常要用到選擇資料庫,點選SourceDataBase選項後面的三個點。彈出選擇資料庫對話方塊:
如果你在下拉選單中,沒有看到自己的資料庫,那麼就可以再次點選後面的兩個點,進行配置。點選後看到如下介面:
如果在這裡沒有你自己想要選擇的資料庫,你可以點選Add按鈕進行新增。
其中Name是你要連線的資料庫名,然後有個Provider Type的下拉列表框,在這個框裡面可以選擇需要操作的資料庫,如下圖:
對於SqlServer應該選擇SqlSchemaProvider。
ConnectionString:資料庫連線字串,你可以點選後面的三個點的按鈕來進行生成,點選後介面如下:
是不是很有親切感,很熟悉啊。
選擇好路徑,點選Test Connection測試連線,如果沒有問題就連線上資料庫了。然後就一路選擇OK返回。
回到主介面後,點選Generate(生成),稍等一會,待進度條全部變成綠色,程式碼檔案就會生成到你設定的目錄裡面了。
程式碼生成之後,CodeSmith會顯示如下介面:
最後到剛剛設定的輸出目錄去看看生成的程式碼檔案。
沒有問題已經出來了,開啟檔案看看:
<?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> <class name="MyNamespace.Data.Person, MyApp.MyAssembly" table="Person"> <id name="Id" type="Int32" unsaved-value="null"> <column name="Id" length="4" sql-type="int" not-null="true" unique="true"/> <generator class="native" /> </id> <property name="Name" type="String"> <column name="Name" length="50" sql-type="varchar" not-null="true"/> </property> <property name="Age" type="Int32"> <column name="Age" length="4" sql-type="int" not-null="true"/> </property> </class> </hibernate-mapping>
程式碼檔案:
using System; using System.Collections; namespace MyNamespace.Data { #region Person /// <summary> /// Person object for NHibernate mapped table 'Person'. ///程式碼生成器生成 /// </summary> [Serializable] public class Person { #region 私有成員 protected int _id; protected string _name; protected int _age; #endregion #region 初始化 public Person() { } public Person( string name, int age ) { this._name = name; this._age = age; } #endregion #region 公共屬性 public virtual int Id { get {return _id;} set {_id = value;} } public virtual string Name { get { return _name; } set { if ( value != null && value.Length > 50) throw new ArgumentOutOfRangeException("Invalid value for Name", value, value.ToString()); _name = value; } } public virtual int Age { get { return _age; } set { _age = value; } } #endregion } #endregion }
雖然程式碼檔案是出來了,但是毋庸置疑的是,你依然要對NHibernate的配置十分了解。下一步還是打算來學習下CodeSmith的語法。
第一個CodeSmith模板
CodeSmith強大的地方就在於它能夠完全按照你的要求生成特定的模板,也就是說你可以完全掌控生成的程式碼。
首先,開啟CodeSmith,點選左上角的“資料夾圖示”,隨便選擇一個本地空資料夾。
此時,在主窗體內就會增加了一個資料夾,右鍵該資料夾,選擇NEW->CodeSmith Generator Template(CSharp)。
這樣窗體內就出出現一個.cst字尾的檔案。這個檔案就是模板檔案了。當然現在是空的。現在我們就在這個檔案上面編寫程式碼。
右鍵點選該.cst檔案,選擇Edit,這時CodeSmith模板編輯器就啟動了。
非常親切,因為這個東西模板是仿照VS2010來做的。
我們在上面鍵入以下程式碼:
<%--Language:當前模板使用的語言 ResponseEncoding:輸出檔案的編碼格式 Description:當前模板的描述--%> <%@ CodeTempLate Language="C#" ResponseEncoding="UTF-8" Description="第一個模板程式" %> Hello Wlord <%= DateTime.Now.ToString() %>
點選生成按鈕
我們就可以看到輸出的內容如下了:
圖形介面方面的操作,就到這裡。以後主要學習的是模板程式碼的編寫。