『Spring.NET+NHibernate+泛型』框架搭建之Model(二)

  按照搭建项目的顺序来比较好描述一些,我一般先搭建实体层,本节内容纯属于NHibernate范畴。先上图和代码,然后对着图和代码逐一讲解,以角色表为例:


  T_Role表:


  数据库表设计很简单,ID为主键,并且是自增长的,其他字段还包括角色名称(Name)、描述(Content)、排序(Sort)、状态(Status)、Del(是否删除)。这里就不对T_Role表赘述了。


   T_Role类:

using System;

//Nhibernate Code Generation Template 1.0
//author:MythXin
//blog:www.cnblogs.com/MythXin
//Entity Code Generation Template
namespace Model{
	 	//T_Role
		public class T_Role
	{
	
      	/// <summary>
		/// ID
        /// </summary>
        public virtual int ID
        {
            get; 
            set; 
        }        
		/// <summary>
		/// Name
        /// </summary>
        public virtual string Name
        {
            get; 
            set; 
        }        
		/// <summary>
		/// Content
        /// </summary>
        public virtual string Content
        {
            get; 
            set; 
        }        
		/// <summary>
		/// Order
        /// </summary>
        public virtual int? Sort
        {
            get; 
            set; 
        }        
		/// <summary>
		/// 1 启用(默认)
        ///0 禁用
        /// </summary>
        public virtual string Status
        {
            get; 
            set; 
        }        
		/// <summary>
		/// 1 正常(默认)
      ///0 删除
        /// </summary>
        public virtual string Del
        {
            get; 
            set; 
        }        
		   
	}
}


  T_Role类必须与T_Role表的字段一一对应,名字可以不一样,但是字段属性数量和类型必须是一一对应的,此外,每个字段属性都必须为virtual的。


T_Role表与T_Role的映射文件:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Model" >
  <class name="Model.T_Role, Model" table="T_Role">
    <id name="ID" column="ID" type="int" unsaved-value="0">
      <generator class="native"/>
    </id>
    <property name="Name" type="string" column="Name" />
    <property name="Content" type="string" column="Content" />
    <property name="Sort" type="int" column="Sort" />
    <property name="Status" type="string" column="Status" />
    <property name="Del" type="string" column="Del" />
  </class>
</hibernate-mapping>


  顾名思义,T_Role的映射文件是映射T_Role类和T_Role表的。注意以下几点:

  (1) 必须按照上述格式书写,其中:

    a. hibernate-mapping固定上述格式,assembly为文件所在的命名空间;

    b. class标签中的name为“T_Role的命名空间.T_Role,T_Role的命名空间”,table为T_Role表的表名;

    c. id标签为主键,必须有主键,unsaved-value="0"意思是默认值是0,<generator class="native"/>表示按照数据库定义的方式处理主键,如我定义了自增长;

    d. id或property标签中的name为T_Role类中字段名称,而column必须为与之对应的T_Role表的字段名称,且数据类型相同;

  (2) 文件必须以.hbm.xml后缀结尾,如:T_Role.hbm.xml;

  (3) 必须右键点击文件-属性,将生成操作选为“嵌入的资源


  说明:T_Role类文件(.cs文件)和T_Role映射文件(.hbm.xml)按理说可以分别放到不同的文件夹,但是这样放,运行的时候却提示找不到,最后无奈只能放一起了。要是哪位大神解决了此问题麻烦留言告知,谢谢。另外,视图和表的方式完全一样的,映射的时候指定映射的视图就行了。

  最后,实体类和映射文件都是可以通过代码生成器生成的,建议不要自己去写,容易出错,还找不出错在哪里,用代码生成器生成之后不对的修改下就可以了。我使用的动软代码生成器,代码生成器连接上数据库后,右键对应的数据库选择“模板代码批量生成”,选定要生成的表、模板就可以了,操作很简单,就不详述了,不清楚的留言,或加入博客签名里的QQ群交流。


贴上Model的目录图,并不需要任何多余的引用:







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值