CodeSmith圖形界面操作
先從用法開始:以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() %>
點擊生成按鈕
我們就可以看到輸出的內容如下了:
圖形界面方面的操作,就到這里。以后主要學習的是模板代碼的編寫。