二、框架搭建之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的目录图,并不需要任何多余的引用:



版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-16 13:41:50

二、框架搭建之Model的相关文章

基于Web Service的客户端框架搭建二:数据转换层(FCL)

引言 要使用WebService来分离客户端与服务端,必定要使用约定好两者之间的数据契约.Json数据以其完全独立于语言的优势,成为开发者的首选.C# JavaScriptSerializer为Json与Object对象之间的序列化与反序列化提供了良好的方法. 接口设计 数据转换包含Json反序列化成Object对象和Object序列化成Json数据.在项目中,会有很多实例对象,都需要使用Serialize和Deserialize方法来实现数据转换,我们可以抽象出一个接口IDFC(数据格式转换接

SSM框架搭建(二) 创建MAVEN项目

SSM框架搭建(一) JDK和MAVEN环境搭建 SSM框架搭建(二) 创建MAVEN项目 一:创建Maven 项目 注意选择是webapp的哪一个 我创建的默认JRE是1.5的,所以需要修改一下 选中项目,alt+enter(等于右键Properties) 1:修改java Bulid Path 2:修改java Compiler,改为自己的电脑最高版本jdk 3:修改 Project Facets,改为自己的电脑最高版本jdk 4:Dynamic Web Module,应该改为3.0的但是我

实习小结(二)---SSM框架搭建

SSM项目框架搭建 前几天做了一个学生信息管理的项目,使用纯控制台输入,查询数据库,将信息在控制台中打印,功能完善得差不多之后,老师让将这个项目移植到Web中,使用Spring+SpringMVC+MyBatis将项目做成网页,借此机会熟悉一下SSM框架的搭建流程. 项目的目录结构如下: SSM框架搭建流程: 1.项目所需要的jar包 图片中的jar包可能一些多于的包,另外在开发中遇到没有导入的包的时候再去下载 2.配置文件 (1)web.xml <?xml version="1.0&qu

基于Flask框架搭建视频网站的学习日志(二)

基于Flask框架搭建视频网站的学习日志(二)2020/02/02 一.初始化 所有的Flask程序都必须创建一个程序实例,程序实例是Flask类的对象 from flask import Flask app = Flask(__name__) Flask 类的构造函数Flask()只有一个必须指定的参数,即程序主模块或包的名字.在大多数程序中,python的__name__变量就是所需的值.(Flask这个参数决定程序的根目录,以便稍后能够找到相对与程序根目录的资源文件位置)--<Flask

Unity 游戏框架搭建 2019 (九~十二) 第一章小结&amp;第二章简介&amp;第八个示例

第一章小结 为了强化教程的重点,会在合适的时候进行总结与快速复习. 第二章 简介 在第一章我们做了知识库的准备,从而让我们更高效地收集示例. 在第二章,我们就用准备好的导出工具试着收集几个示例,这些示例中有的是我们后续库的基础工具,也有的是在项目中非常实用的小工具,还有一些示例是实践了在框架搭建方向上非常重要的 C# 语法知识. 第二章大纲如下. 第八个示例(一) 在之前,我们完成了一个导出的功能.但是在完成这个功能的过程中,我们也遇到了一些问题.我们回忆一下,在<MenuItem 复用>的这

Unity 游戏框架搭建 2019 (二十三、二十四) 备份与版本号&amp;危险的操作

先列出上一篇的总结: 要做的事情: 备份:导出文件,并取一个合理的名字. 遗留问题: 第八个示例与之前的示例代码重复,功能重复. 约定和规则: 每个示例在 QFramework 目录下创建一个文件夹,文件夹的格式是: 数字.示例的功能 每个示例写一个脚本,脚本中包含可复用的静态方法和 MenuItem 方法. 每写一个示例进行一次导出,导出的文件名后边加上日期和时间,这个功能已经在导出功能里内置了. 示例分类: 知识学习&收集 API 收集 C# 语法实践 库本身的功能 规则实现 使用流程提供及

Unity 游戏框架搭建 (二十一) 使用对象池时的一些细节

上篇文章使用SafeObjectPool实现了一个简单的Msg类.代码如下: class Msg : IPoolAble,IPoolType { #region IPoolAble 实现 public void OnRecycled() { Log.I("OnRecycled"); } public bool IsRecycled { get; set; } #endregion #region IPoolType 实现 public static Msg Allocate() { r

ssm框架搭建(上)

前言 之前也说过,工作做的开发都是基于公司现有的框架,心里很没底.所以一直想自己能够搭建出ssm框架.经过多次尝试,终于成功了.这边文章将从两个方面进行,一是框架搭建,二是简单的增删查改. 正文 1.环境搭建 这里采用现在流行的maven方式,而是将需要的jar放在web_inf\lib下面了. 直接贴了一张图,有点任性了...整个工程的结构如下图所示 在conf子包中,是配置文件.mapper下对应mybatis的映射文件,里面包含了相应的sql语句.(mvcLearn\conf\mapper

领域层框架搭建

领域层框架搭建 根据前面对领域驱动设计概念以及一些最佳实践的理解,领域模型是系统最核心的部分,我们还是采用前面销售订单的例子,这个案例系统的核心构建就从领域层开始.领域层框架搭建主要完成两个任务: 1.领域模型的建立,聚合与聚合根的确定,关系的确定. 2.建立支持DDD理论的领域层接口. 这里先上代码图,再详细讲每个部分的主要功能: 1.Model中主要确定了领域对象,聚合与聚合根,关联关系等,我们这里采用的是EF 的Model First建模,你也可以采取Code First.如下图: 2.A