NHibernate 学习第二天 项目搭建

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 >

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

你可能感兴趣的:(Hibernate)