依照搭建项目的顺序来比較好描写叙述一些,我一般先搭建实体层,本节内容纯属于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的文件夹图。并不须要不论什么多余的引用:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">





『Spring.NET+NHibernate+泛型』框架搭建之Model(二)的更多相关文章

  1. 『Spring.NET+NHibernate+泛型』框架搭建之DAO(三)★

    本节内容介绍Nhibernate所封装的数据库訪问层.只是我增加了泛型进行封装.大概思路:首先,我们有一个接口层,另一个相应的实现层.在接口层中我们先定义一个父接口,父接口中定义每个接口都可能会用到的 ...

  2. NHibernate框架与BLL+DAL+Model+Controller+UI 多层架构十分相似--『Spring.NET+NHibernate+泛型』概述、知识准备及介绍(一)

    原文://http://blog.csdn.net/wb09100310/article/details/47271555 1. 概述 搭建了Spring.NET+NHibernate的一个数据查询系 ...

  3. MVC+Spring.NET+NHibernate .NET SSH框架整合 C# 委托异步 和 async /await 两种实现的异步 如何消除点击按钮时周围出现的白线? Linq中 AsQueryable(), AsEnumerable()和ToList()的区别和用法

    MVC+Spring.NET+NHibernate .NET SSH框架整合   在JAVA中,SSH框架可谓是无人不晓,就和.NET中的MVC框架一样普及.作为一个初学者,可以感受到.NET出了MV ...

  4. Spring MVC+Spring+Mybatis+MySQL(IDEA)入门框架搭建

    目录 Spring MVC+Spring+Mybatis+MySQL(IDEA)入门框架搭建 0.项目准备 1.数据持久层Mybatis+MySQL 1.1 MySQL数据准备 1.2 Mybatis ...

  5. MVC+Spring.NET+NHibernate .NET SSH框架整合

    在JAVA中,SSH框架可谓是无人不晓,就和.NET中的MVC框架一样普及.作为一个初学者,可以感受到.NET出了MVC框架以后太灵活了(相比之前的web Form),嗯,关于.NET中的MVC框架我 ...

  6. spring + springMVC + spring Data + jpa + maven 项目框架搭建

    首先看一下项目结构: 所用到的jar(pom.xml): <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:x ...

  7. 【面试】足够“忽悠”面试官的『Spring事务管理器』源码阅读梳理(建议珍藏)

    PS:文章内容涉及源码,请耐心阅读. 理论实践,相辅相成 伟大领袖毛主席告诉我们实践出真知.这是无比正确的.但是也会很辛苦. 就像淘金一样,从大量沙子中淘出金子一定是一个无比艰辛的过程.但如果真能淘出 ...

  8. 框架搭建资源 (二) 添加M(模型)

    applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xm ...

  9. [c#]asp.net开发微信公众平台(2)多层架构框架搭建和入口实现

    上篇已经设计出比较完善的数据库了,这篇开始进入代码.  首先把上篇设计的数据库脚本在数据库中执行下,生成数据库,然后在VS中建立项目,为了方便理解和查看,我设计的都是很直白的类名和文件名,没有命名空间 ...

随机推荐

  1. Zookeeper的临时节点和永久节点

    Zookeeper中节点分为两种:临时节点和永久节点. 临时节点有一个节点: 当创建临时节点的程序停掉之后,这个临时节点就会消失. 更直观的,如下   Persistent是临时节点. Persist ...

  2. IIS: 响应消息的内容类型 text/html; charset=utf-8 与绑定(text/xml; charset=utf-8)的内容类型不匹配。如果使用自定义编码器,请确保正确实现 IsContentTypeSupported 方法

    以前好好的项目,突然出现了这个问题.一顿google后无果,有人说是程序池的原因,有人说是安全配置的原因,照着网上方法试了多次,还是没有解决.如下图: 突然发现了一片文章 (https://www.j ...

  3. sql server 大数据跨服务器迁移表数据——使用链接服务器

    1.创建链接服务器(填写链接服务器.远程登录.使用密码) 2.188.188.1.177是远程的 select count(*) from [188.188.1.177].BigDataAnalysi ...

  4. jQuery——链式编程与隐式迭代

    链式编程 1.原理:return this; 2.通常情况下,只有设置操作才能把链式编程延续下去.因为获取操作的时候,会返回获取到的相应的值,无法返回 this. 3.end():结束当前链最近的一次 ...

  5. JS——祝愿墙

    注意事项: 1.for循环的下一层注册了事件的话,事件函数中关于变量i的节点元素是不允许出现的,因为在函数加载的时候,只会加载函数名,不会加载函数体,外层for循环会走完一边,变量i一直会停留在最后一 ...

  6. 【译】x86程序员手册21-6.3.5为操作系统保留的指令

    6.3.5 Some Instructions are Reserved for Operating System 为操作系统保留的一些指令 Instructions that have the po ...

  7. @RequestMapping参数value和params的区别

    value的值可以是一个url地址的形式或者正则表达式或者rest风格的形式,而params正如其名是参数,访问的时候params的值只能作为参数,不能作为访问的地址,请看下例> value的使 ...

  8. Enable ssh root login in Solaris

    1. Change the file /etc/ssh/sshd_config with PermitRootLogin yes to replace PermitRootLogin no 2. re ...

  9. 使用脚手架创建vue项目之后会有很多警告,如何关闭它!

    依次打开build→webpack.base.conf.js文件,然后找到createLintingRule,把里面的内容选择性的删除即可,就是这么easy;

  10. Opencv学习之路——自己编写的HOG算法

    #include<opencv2\core\core.hpp> #include<opencv2\highgui\highgui.hpp> #include<opencv ...