1. 新建一个web 项目
我的Web项目的名称是 NHibernateTemplate\llr.web
实体层名称 NHibernateTemplate\llr.Models
数据层名称 NHibernateTemplate\llr.DAL
业务层名称 NHibernateTemplate\llr.BLL
取名是为llr.* 是为了更好的通一命名空间,就不需要建好项目后再去修改默认命名空间或程序集名称了。llr为我姓名简称,大家可以自便
2. 引用NHibernate 所需要的DLL文件
请看第一天内容
3. 创建实体类
可以采用手工或 模板生成 去做, 本人纯手工,因为手工现在比较值钱
三个类
User.cs
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
namespace
llr.Models
{
[Serializable]
public
class
User
{
public
virtual
int
Id {
get
;
set
; }
public
virtual
string
U_name {
get
;
set
; }
public
virtual
string
U_pwd {
get
;
set
; }
public
virtual
int
R_id {
get
;
set
; }
}
}
Menu.cs
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
namespace
llr.Models
{
[Serializable]
public
class
Menu
{
public
virtual
int
Id{
get
;
set
;}
public
virtual
string
M_title{
get
;
set
;}
public
virtual
string
M_parnet{
get
;
set
;}
public
virtual
string
M_url {
get
;
set
; }
}
}
Role.cs
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
namespace
llr.Models
{
[Serializable]
public
class
Role
{
public
virtual
int
Id {
get
;
set
; }
public
virtual
string
R_name {
get
;
set
; }
public
virtual
string
R_desc {
get
;
set
; }
}
}
上面的实体类有一个特别的地方就是属性加了 virtual 关键字,为什么要这么设置了?因为,我也忘记了。在最后会提供一个pdf文档,里面有的。
4. 对实体类进行配置映射XML文件
每一个实体类文件对应这一个XML配置文件 , 配置文件名称命名是有规定的: 实体类名+.hbm.xml 如 User.cs 的配置文件名称为 User.hbm.xml
<?
xml version="1.0" encoding="utf-8"
?>
<!--
配置映射对象的所在程序集各命名空间
-->
<
hibernate-mapping
xmlns
="urn:nhibernate-mapping-2.2"
assembly
="llr.Models"
namespace
="llr.Models"
>
<!--
映射对象类与数据库中对应的表
-->
<
class
name
="llr.Models.User,llr.Models"
table
="Users"
>
<
id
name
="Id"
column
="Id"
unsaved-value
="0"
>
<
generator
class
="identity"
/>
<!--
有几种方式 assigned 为主键不是自动增长的由程序来控件,identity 是由数据库自动控件不需要人工处理,还有一些其它的选项可以查询一下
-->
</
id
>
<!--
设置其它字段 第一个为属性名就是实体类里面的属性名 column 为数据库里面字段名
-->
<
property
name
="U_name"
column
="u_name"
not-null
="false"
type
="string"
length
="10"
/>
<
property
name
="U_pwd"
column
="U_pwd"
not-null
="false"
type
="string"
length
="10"
/>
<!--
这里应该是外键关系,先用一般的关系来处理
-->
<
property
name
="R_id"
column
="r_id"
not-null
="false"
type
="int"
length
="4"
/>
</
class
>
</
hibernate-mapping
>
配置文件写好以后,请做一件事 在xml 文件上面点右键 --》 属性 --》将其它 生成操作 改变为 嵌入的资源 这样才能读到xml文件!
其它的二个实体类配置也按上面的完成
Menu.hbm.xml
<?
xml version="1.0" encoding="utf-8"
?>
<!--
配置映射对象的所在程序集各命名空间
-->
<
hibernate-mapping
xmlns
="urn:nhibernate-mapping-2.2"
assembly
="llr.Models"
namespace
="llr.Models"
>
<!--
映射对象类与数据库中对应的表
-->
<
class
name
="llr.Models.Menu,llr.Models"
table
="Menu"
>
<
id
name
="Id"
column
="mid"
unsaved-value
="0"
>
<
generator
class
="assigned"
/>
<!--
有几种方式 assigned 为主键不是自动增长的由程序来控件,identity 是由数据库自动控件不需要人工处理,还有一些其它的选项可以查询一下
-->
</
id
>
<!--
设置其它字段 第一个为属性名就是实体类里面的属性名 column 为数据库里面字段名
-->
<
property
name
="M_title"
column
="m_title"
not-null
="false"
type
="string"
length
="10"
/>
<
property
name
="M_url"
column
="m_url"
not-null
="false"
type
="string"
length
="10"
/>
<!--
这里应该是外键关系,先用一般的关系来处理
-->
<
property
name
="M_parnet"
column
="m_parnet"
not-null
="false"
type
="int"
length
="4"
/>
</
class
>
</
hibernate-mapping
>
Role.hbm.xml
<?
xml version="1.0" encoding="utf-8"
?>
<!--
配置映射对象的所在程序集各命名空间
-->
<
hibernate-mapping
xmlns
="urn:nhibernate-mapping-2.2"
assembly
="llr.Models"
namespace
="llr.Models"
>
<!--
映射对象类与数据库中对应的表
-->
<
class
name
="llr.Models.Role,llr.Models"
table
="Role"
>
<
id
name
="Id"
column
="rid"
unsaved-value
="0"
>
<
generator
class
="identity"
/>
<!--
有几种方式 assigned 为主键不是自动增长的由程序来控件,identity 是由数据库自动控件不需要人工处理,还有一些其它的选项可以查询一下
-->
</
id
>
<!--
设置其它字段 第一个为属性名就是实体类里面的属性名 column 为数据库里面字段名
-->
<
property
name
="R_name"
column
="r_name"
not-null
="false"
type
="string"
length
="10"
/>
<
property
name
="R_desc"
column
="r_desc"
not-null
="false"
type
="string"
length
="10"
/>
</
class
>
</
hibernate-mapping
>
搞完后准备写数据库连接了。下次继续