坚持,坚定,坚强

博客园 首页 新随笔 联系 订阅 管理

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 { getset; }
        
public virtual string U_name { getset; }
        
public virtual string U_pwd { getset; }
        
public virtual int R_id { getset; }
    }
}

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 { getset; }
    }
}

 

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 { getset; }
        
public virtual string R_name { getset; }
        
public virtual string R_desc { getset; }
    }
}

 

上面的实体类有一个特别的地方就是属性加了 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>

搞完后准备写数据库连接了。下次继续

posted on 2011-06-10 11:27  老公鸡  阅读(296)  评论(0)    收藏  举报