zoukankan      html  css  js  c++  java
  • 『Spring.NET+NHibernate+泛型』框架搭建之Model(二)

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


      T_Role表:


      数据库表设计非常easy,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)按理说能够分别放到不同的目录,可是这样放。执行的时候却提示找不到。最后无奈仅仅能放一起了。要是哪位大神攻克了此问题麻烦留言告知,谢谢。

    另外,视图和表的方式全然一样的。映射的时候指定映射的视图即可了。

      最后,实体类和映射文件都是能够通过代码生成器生成的,建议不要自己去写。easy出错。还找不出错在哪里,用代码生成器生成之后不正确的改动下就能够了。

    我使用的动软代码生成器,代码生成器连接上数据库后。右键相应的数据库选择“模板代码批量生成”,选定要生成的表、模板就能够了,操作非常easy,就不详述了,不清楚的留言,或增加博客签名里的QQ群交流。


    贴上Model的文件夹图。并不须要不论什么多余的引用:






    
  • 相关阅读:
    mysql配置参数
    nginx配置https,重定向后https变成了http
    网速测试工具
    批量清理mysql进程
    新版本django中的path不能使用正则表达式
    巨好看的xshell配色
    zabbix 基于sendmail发送邮件相关问题
    curl分析请求的各个部分耗时情况
    wqs二分的边界
    oauth2
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/7262508.html
Copyright © 2011-2022 走看看