NHibernate使用入门(含NHbernate中CodeSmith的使用)

操作步骤:

1.在数据库中创建把.Net类持久化的类

2.创建需要被持久化的.Net类

3.创建映射文件,告诉NH应该如何去持久化这些类的属性

4.创建NH的配置文件,以后NH怎样连接数据库

5.使用NH提供的API

 

一、下载NHibernate

进入网站:http://www.hibernate.org/ 下载对应NHibernate包

二、第一个入门例子:环境:windows 7 (64 bit)+vs2010+sql server 2008+CodeSmith Professional 5.2

setup1:

创建一个数据库(NH,并在NH数据库中创建一张表)

View Code
use NH
go
-- 创建数据表
create table T_Persion
(
id int identity(1,1) primary key,
name nvarchar(50),
pwd varchar(32)
)
go

setup2:

打开VS2010,创建一个Console Application项目<NHTest>;在NHTest 项目下新建一个Model类库项目EntityModel

setup3:

解压nhibernate_template.rar文件,打开NHibernate.cst,在CodeSmith姐main输入信息,如下图:

NHibernate使用入门(含NHbernate中CodeSmith的使用)

再点击Generate按钮,生成文件T_Persion.hbm.xml +T_Persion.cs 将生成的文件拷贝到EntityModel项目中

注意:这里生成的T_Persion.hbm.xml 需要简单的修改.否则无法正确使用;

1.修改T_Persion.hbm.xml文件(修改后的代码如下)

View Code
<?xml version="1.0" encoding="utf-8" ?>
<!--这里的xmlns="urn:nhibernate-mapping-2.2"值应该与使用的nhibernate的nhibernate-mapping.xsd文件中的值一致-->
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="EntityModel.TPersion, EntityModel" table="T_Persion">
<!--类中的属性名-->
<id name="Id" type="Int32" unsaved-value="null">
<!--数据库中的名字-->
<column name="id" length="4" sql-type="int" not-null="true" unique="true" index="PK__T_Persio__3213E83F7F60ED59"/>
<!--表示内容是自动生成的-->
<generator class="native" />
</id>
<property name="Name" type="String">
<column name="name" length="50" sql-type="nvarchar" not-null="false"/>
</property>
<property name="Pwd" type="String">
<column name="pwd" length="32" sql-type="varchar" not-null="false"/>
</property>
</class>
</hibernate-mapping>

2.将EntityModel项目下所有的T_Persion.hbm.xml文件的属性,改为嵌入的资源

NHibernate使用入门(含NHbernate中CodeSmith的使用)

编译EntityModel项目,生成EntityModel.dll <这里的原理是:将对象以及对象的映射文件封装起来>

setup3:

在NHTest项目中新增对EntityModel.dll、NHibernate.dll文件的引用;

再进行下一步之前,思考一个问题,在ADO.Net下,连接数据库的步骤是怎样的,使用NHibernate又应该连接数据库呢?

setup4:配置NHibernate

在NHTest项目中新增一个Application Configuration File,在App.config文件中配置<可以参考NHibernate下的配置模板,在Configuration_Templates文件夹下>

View Code
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler" requirePermission="True"></section>
</configSections>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" >
<session-factory>
<!--数据驱动提供类-->
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider, NHibernate</property>
<!--连接数据库时的驱动-->
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
<!--数据库连接字符串-->
<property name="connection.connection_string">
Server=(127.0.0.1);Initial Catalog=NH;Persist Security Info=True;User ID=sa;Password=20070927
</property>
<!--分页的大小-->
<property name="adonet.batch_size">10</property>
<!--是否显示sql语句-->
<property name="show_sql">false</property>
<property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
<property name="command_timeout">60</property>
<property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>
</session-factory>
</hibernate-configuration>
</configuration>

setup5:通过编码使用NHibernate的API完成对数据的CRUD

 

 

 

 

 

 

 

 


 

 

你可能感兴趣的:(Hibernate)