日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

快速生成NHibernate的映射文件和映射类的利器 —— codesmith软件

發布時間:2024/9/20 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 快速生成NHibernate的映射文件和映射类的利器 —— codesmith软件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

1.???? Codesmith軟件簡介

?

(1) Codesmith軟件是一種基于模板的代碼生成工具,ORM中,它能幫助我們生成實體類、XML配置文件,從而簡化了我們一部分的開發工作,它的使用類似于ASP.NET的語法來生成任意類型的代碼和文本,使用Codesmith可以生成包括簡單的強類型集合和完整應用程序在內的任何東西。

?

(2) 當我們用ASP.NET開發網站或者項目生成應用程序的時候,我們經常需要完成一些重復性的任務,例如:編寫數據訪問代碼或者生成自定義集合,Codesmith在這個時候特別的有用,因為我們可以編寫模板自動完成這些任務,從而可以提高我們的工作效率。

?

(3) 下面我將以自動生成NHibernate的映射文件和映射類的實例來說明一下本軟件的使用方法,其它的我們可以自己研究研究,因為我要用到這些。

?

2.???? 第一步下載軟件

?

(1) 輸入網址:http://www.codesmithtools.com/我們可以下載代碼輔助生成器Codesmith。下載完成后我們可以安裝,安裝步驟和我們安裝任何的軟件都相同。這款軟件我們能夠免費使用1個月,一個月后我們可以找找怎么破解或者購買軟件。

?

3.???? 第二步:下載需要安裝的NHibernate組件

?

(1) 因為我要自動生成的是NHibernate的映射文件和類,但是本軟件本身沒有自帶,所以我們需要下載nhibernate template的一個組件,然后安裝到CodeSmith。下面我截圖大致說一下使用的方法。

?

(2) 打開軟件CodeSmith,如圖:

?

?

因為我已經安裝了NHibernate_template,所以現在已經顯示,如果沒有安裝的話,單擊像個小文件夾的地方,找到自己下載的組件的地方,然后添加進去。然后單開就如圖所示:

?

?

(3) 接下來怎么操作呢??呵呵,很簡單的,看到有個NHibernate.cst文件單擊如圖所示:

?

?

?

?

(4) 接下來我們可以看到上圖所示的圖形,我詳細的解釋一下,OutputDirectory的意思是我們要將生成的映射文件和映射類放在磁盤的那里,當然啦,這是我們自己選擇的。

?

(5) 我主要說一下做重要的就是SourceDatabase,因為這是如何從我們數據庫中讀取出來數據庫的,我們單擊最后面的三個點的按鈕,會出現如圖所示的界面,

?

?

這時候我們可以在DataSource(數據庫資源)下拉看是否有我們需要的數據庫,如果有的話,我們可以直接單擊Select,如果沒有的話我們可以單擊后面有三個小點的按鈕,這時候會出現如圖所示的界面:

?

?

?

?

(6) 然后我們單擊Add按鈕,將會啟動另外一個漂亮的界面,如圖所示:

?

?

?

?

(7) 重點的介紹是這里哦,在這里有個Name的文本框我們可以填入我們所需要的數據庫名,然后有個Provider Type的下拉列表框,在這個框里面我們可以選擇我們需要操作的數據庫,如下圖:

?

?

?

?

(8) 因為我操作的SQL Server 2005數據庫,所以我選擇了SqlSchemaProvider這個屬性代表數據庫,如果你使用的是其他的數據庫的話,你也可以自己選擇。然后有個Connection String的文本框,它是寫連接字符串的,如果我們自己會寫的話直接寫入到里面,然后單擊Test按鈕測試是否可行,如果不會寫的話,我們可以單擊三個點的按鈕然后跳到如圖所示的頁面:

?

?

?

?

(9) 這個頁面我們太熟悉了吧,只要是學過ASP.NET的都會接觸到這個頁面,所以我就不說了,但我們填寫完成信息后但就OK按鈕,會在前面的文本框中自動生成鏈接字符串,然后我們在單擊那個頁面的OK按鈕,然后我們在一層一層的退回來,這里我就在不截圖說明了,最后選擇到我們的數據庫。

?

(10) Assembly是我們項目的程序集的名字,我們可以輸入到里面,如果不知道的話我們可以再Visual Studio項目中的一個工程文件下面單擊右鍵——屬性,我們就可以看到程序集和默認命名空間的名字,如圖所示:

?

?

?

?

(11) ForceId默認就是選中的,也就是True的意思(如果表中的ID為主鍵),它的作用是就是強制NhibernateSample所表示的數據庫的所有表需要有主鍵,

?

(12) NameSpace即命名空間,我們可以和查看程序集的方法一樣查看那個的命名空間。

?

(13) RemoveTablePrefix使其默認的值就行。

?

最后單擊Generate按鈕,將會在你標識的位置生成映射文件和映射類。

?

4.???? 生成的項目的代碼

?

(1) 我用的數據庫如圖所示:建立一個NHibernate數據庫,在數據庫中建立一張users表,其中表的字段如圖所示:

?

?

?

?

(2) 生成的映射文件和映射類如下:

?

映射類:users.cs

?

using System;

?

using System.Collections;

?

?

?

namespace Test.Model

?

{

?

?????? #region User

?

?

?

?????? ///<summary>

?

?????? /// User object for NHibernate mapped table 'users'.

?

?????? ///</summary>

?

?????? public class User

?

?????? {

?

????????????? #region Member Variables

?

??????

?

????????????? protected string _id;

?

????????????? protected string _name;

?

????????????? protected string _password;

?

????????????? protected string _emailAddress;

?

????????????? protected DateTime _lastLogon;

?

????????????? #endregion

?

????????????? #region Constructors

?

????????????? public User() { }

?

????????????? public User( string name, string password, string emailAddress, DateTime lastLogon )

?

?????? ?????? {

?

???????????????????? this._name = name;

?

???????????????????? this._password = password;

?

???????????????????? this._emailAddress = emailAddress;

?

???????????????????? this._lastLogon = lastLogon;

?

????????????? }

?

????????????? #endregion

?

????????????? #region Public Properties

?

????????????? public string Id

?

????????????? {

?

???????????????????? get {return _id;}

?

???????????????????? set

?

???????????????????? {

?

??????????????????????????? if ( value != null && value.Length > 20)

?

?????????????????????????????????? throw new ArgumentOutOfRangeException("Invalid value for Id", value, value.ToString());

?

??????????????????????????? _id = value;

?

???????????????????? }

?

????????????? }

?

????????????? public string Name

?

????????????? {

?

???????????????????? get { return _name; }

?

???????????????????? set

?

???????????????????? {

?

??????????????????????????? if ( value != null && value.Length > 40)

?

?????????????????????????????????? throw new ArgumentOutOfRangeException("Invalid value for Name", value, value.ToString());

?

??????????????????????????? _name = value;

?

???????????????????? }

?

????????????? }

?

????????????? public string Password

?

????????????? {

?

???????????????????? get { return _password; }

?

???????????????????? set

?

???????????????????? {

?

??????????????????????????? if ( value != null && value.Length > 20)

?

?????????????????????????????????? throw new ArgumentOutOfRangeException("Invalid value for Password", value, value.ToString());

?

??????????????????????????? _password = value;

?

???????????????????? }

?

????????????? }

?

????????????? public string EmailAddress

?

????????????? {

?

???????????????????? get { return _emailAddress; }

?

???????????????????? set

?

???????????????????? {

?

??????????????????????????? if ( value != null && value.Length > 40)

?

?????????????????????????????????? throw new ArgumentOutOfRangeException("Invalid value for EmailAddress", value, value.ToString());

?

??????????????????????????? _emailAddress = value;

?

???????????????????? }

?

????????????? }

?

????????????? public DateTime LastLogon

?

????????????? {

?

???????????????????? get { return _lastLogon; }

?

???????????????????? set { _lastLogon = value; }

?

????????????? }

?

????????????? #endregion

?

?????? }

?

?????? #endregion

?

}

?

(2) 映射文件users.hbm.xml

?

<?xmlversion="1.0"encoding="utf-8" ?>

?

<hibernate-mappingxmlns="urn:nhibernate-mapping-2.0">

?

?????? <classname="Test.Model.User, Test.Model"table="users">

?

????????????? <idname="Id"type="String"unsaved-value="null">

?

?????? <columnname="LogonID"length="20"sql-type="varchar"not-null="true"unique="true"/>

?

???????????????????? <generatorclass="native" />

?

????????????? </id>

?

????????????? <propertyname="Name"type="String">

?

???????????????????? <columnname="Name"length="40"sql-type="varchar"not-null="false"/>

?

????????????? </property>

?

????????????? <propertyname="Password"type="String">

?

???????????????????? <columnname="Password"length="20"sql-type="varchar"not-null="false"/>

?

????????????? </property>

?

????????????? <propertyname="EmailAddress"type="String">

?

???????????????????? <columnname="EmailAddress"length="40"sql-type="varchar"not-null="false"/>

?

????????????? </property>

?

????????????? <propertyname="LastLogon"type="DateTime">

?

???????????????????? <columnname="LastLogon"length="8"sql-type="datetime"not-null="false"/>

?

????????????? </property>

?

?????? </class>

?

</hibernate-mapping>

?

總結,發現是不是很爽呢,這些代碼都自動生成了,我們只要在稍微的按我們的需求改改就行,大致的使用方法就介紹到這里吧,里面還有好多好用的東西呢,有時間的話我們可以研究研究的。嘿嘿

?

源碼下載地址:http://www.chuxinm.com/Shop/Detail/Detail?id=b88e9907dbaa4b3db297443081ab238d?

?

http://download.csdn.net/detail/hanyinglong/4491791這是我的下載地址,有需要的可以去這里下載

?

總結

以上是生活随笔為你收集整理的快速生成NHibernate的映射文件和映射类的利器 —— codesmith软件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。