快速生成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这是我的下载地址,有需要的可以去这里下载

 

posted @ 2012-04-21 20:02 Kencery 阅读(...) 评论(...) 编辑 收藏
友情链接:初心商城