内容摘要
准备工作
开发流程
程序开发
一、准备工作
1.1开发环境
开发工具:VS2008以上,我使用的是VS2010
数据库:任意关系型数据库,我使用的是SQL Server 2005 Express
1.2测试环境
nunit 2.5.7
二、开发流程
NHibernate程序的开发流程是:
(1).编写领域类与映射文件
(2).使用NHibernate工具生成对应的数据库结构
(3).编写DAO(数据库访问对象)
(4).使用NUnit测试DAO(数据访问对象)的增、删、该、查方法
三、程序开发
3.1 建立Domain项目,如图3.1.1所示。

图3.1.1
编写类文件Product.cs

/// <summary>
/// 商品
/// </summary>
public class Product
{
/// <summary>
/// ID
/// </summary>
public virtual Guid ID { get; set; }
/// <summary>
/// 编号
/// </summary>
public virtual string Code { get; set; }
/// <summary>
/// 名称
/// </summary>
public virtual string Name { get; set; }
/// <summary>
/// 规格
/// </summary>
public virtual string QuantityPerUnit { get; set; }
/// <summary>
/// 单位
/// </summary>
public virtual string Unit { get; set; }
/// <summary>
/// 售价
/// </summary>
public virtual decimal SellPrice { get; set; }
/// <summary>
/// 进价
/// </summary>
public virtual decimal BuyPrice { get; set; }
/// <summary>
/// 备注
/// </summary>
public virtual string Remark { get; set; }
}
编写映射文件Product.hbm.xml

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Domain" namespace="Domain">
<class name="Product" table="T_Product" lazy="true" >
<id name="ID" column="ID" type="Guid" >
<generator class="assigned" />
</id>
<property name="Code" type="string">
<column name="Code" length="50"/>
</property>
<property name="Name" type="string">
<column name="Name" length="50"/>
</property>
<property name="QuantityPerUnit" type="string">
<column name="QuantityPerUnit" length="50"/>
</property>
<property name="Unit" type="string">
<column name="Unit" length="50"/>
</property>
<property name="SellPrice" type="decimal">
<column name="SellPrice" precision="14" scale="2"/>
</property>
<property name="BuyPrice" type="decimal">
<column name="BuyPrice" precision="14" scale="2"/>
</property>
<property name="Remark" type="string">
<column name="Remark" length="200"/>
</property>
</class>
</hibernate-mapping>
然后,将映射文件“Product.hbm.xml”的属性“生成方式”设置为“嵌入的资源”,如图3.1.2所示。

图3.1.2
3.2 建立名为“NHibernateTest”的项目,如图3.2.1所示

图3.2.1
引用程序集“Antlr3.Runtime.dll”,“Iesi.Collections.dll”,“NHibernate.dll”,“Remotion.Data.Linq.dll”,“nunit.framework.dll”,如图3.2.2所示

图3.2.2
然后音乐Domain项目,复制并粘贴NHibernate的配置模板到项目中,如图3.2.3所示

图3.2.3
修改该文件的属性为“始终复制”
hibernate.cfg.xml
创建“NHibernateInit.cs”类文件,用于初始化数据库的表结构
NHibernateInit.cs
复制proxyfactory类的程序集“LinFu.DynamicProxy.dll”和“NHibernate.ByteCode.LinFu.dll”到项目中,并修改生成方式,如图3.2.4所示

图3.2.4
设置项目属性的启动操作,为“启动外部程序”,然后选择NUnit应用程序的路径。如图3.2.5所示。

图3.2.5
打开SQL Server Management Studio Express,创建名为“NHibernateDemo”的数据库,如图3.2.6

图3.2.6
启用NUnit,选择名称“NHibernateTest.dll”的程序集。如图3.2.7所示。接着,点击“run”按钮运行NUnit。

图3.2.7
这时,我们再打开数据库,就会发现,NHibernate已经为我们建立了“T_Product”表,如图3.2.8所示。

图3.2.8
3.3 编写DAO(数据库访问对象),建立名为“Dao”的项目。如图3.3.1所示。

图3.3.1
引用项目所需的程序集,接着编写IProductDao接口和 ProductDao类
然后在测试项目“NHibernateTest”中编写测试类“ProductDaoTest”。
ProductDaoTest
最后运行NUnit测试该项目。效果如图3.3.2所示。

图3.3.2
好了,一个NHibernate完整的项目就做完了。从中我们可以发现,此应用程序项目没有编写一条SQL语句,就能实现数据的增、删、该、查。
这样一来,便简化了我们的项目开发。O(∩_∩)O~
代码下载
出处:http://www.cnblogs.com/GoodHelper/archive/2011/02/16/nhibernate_03.html
欢迎转载,但需保留版权。