摘要 NHibernate支持所有的数据库数据类型. 以SQL Server数据库为例,下表是NHibernate支持的SQL Server数据库最常见的数据类型对照表. 第一列是NHibernate映射文件内type属性值,第二列是对应的.Net的POCO类属性数据类型,第三列是数据库字段类型. NHibernate映射类型   .Net数据类型   数据库数据类型   Int16 System.Int16 DbType.Int16 Int32 System.Int32 DbType.Int3…
这篇文章理论的知识比较多一些,都是个人观点,描述有失妥当的地方希望读者指出. [微信小程序开发•系列文章一]入门 [微信小程序开发•系列文章二]视图层 [微信小程序开发•系列文章三]数据层 [微信小程序开发•系列文章四]模块化 [微信小程序开发•系列文章五]主界面 [微信小程序开发•系列文章六]生命周期和路由 整个微信小程序从打开到关闭,整个过程可以分为很多阶段或者说状态,这一整段的过程,我们称之为小程序的生命周期.而周期中的每种不同的状态,到另一个状态的过度和转化,是需要一个触发机制的,这种机…
摘要 NHibernate是一个成熟的开源的面向对象的.net映射框架.大量的实际项目中正在使用该框架.他是建立在ADO.Net基础之上.目前的版本是NHibernate 4.0.4.本系列文章都是基于NHibernate 4.0版本. 1. 什么是ORM? ORM指Object Relational Mapping.他是一种让你可以在面向对象和关系数据库之间互相映射的技术. 现实世界中,每个事物都是对象.我们称具有自己数据属性的事物为对象. 关系世界都是以集合为基础的表和数据行记录.这不同于面…
摘要 从这一节起,介绍NHibernate Mapping的内容.前面文章都是使用的NHibernate XML Mapping.NHibernate XML Mapping是NHibernate最早最成熟的Mapping方法.其他的Mapping方法都是基于XML Mapping的思想进行的“变种”,要么暂时不能完全像XML Mapping那样功能丰富.其他的Mapping方法目前包括:Fluent Mapping.Attribute Mapping和Mapping by Convention…
摘要 前面文章介绍了NHibernate对简单.net数据类型的映射对照表.NHibernate也可以映射复杂数据类型,这里介绍通过组件映射NHibernate值对象. 1. NHibernate引用对象和NHibernate值对象 NHibernate引用对象:指的是具有主键值的NHibernate实体对象,他必须是另一个NHibernate实体对象的属性.他所属的对象也可以理解为主对象,有一个从属的指向关系.例如:Order对象有个属性Customer,表示这个Order对象是属于哪个Cus…
摘要 在同一时刻数据访问量和更新次数比较大的系统中,产生了数据的并发访问问题.并发访问使得在这样的环境中,所有用户(程序.实际用户.进程.线程等)的操作不产生负面问题. 如果不使用并发,在两个用户同时写同一条数据的时候,最后结果是不确定的.不使用并发的时候两个客户同时删除同一条数据,将产生异常终止程序. 并发控制方式有两种:悲观并发控制和乐观并发控制,NHibernate使用乐观并发控制.这篇文章首先介绍这两种策略,然后详细介绍NHibernate的乐观并发控制. 1. 悲观并发控制和乐观并发控…
第一章:NHibernate基础 NHibernate介绍 第一个NHibernate工程 简单的增删改查询 运行时监控 NHibernate配置 数据类型映射 Get/Load方法 NHibernate批量更新 NHibernate事务 NHibernate组件 使用程序集管理NHibernate项目 NHibernate Session管理 第二章:NHibernate对象状态.缓存与并发控制 NHibernate对象状态 NHibernate一级缓存 NHibernate二级缓存上 NHi…
摘要 上一篇文章介绍了NHibernate HQL,他的缺点是不能够在编译时发现问题.如果数据库表结构有改动引起了实体关系映射的类有改动,要同时修改这些HQL字符串.这篇文章介绍NHibernate面向对象的Criteria查询.他提供了很多API接口,可以实现“私人订制”式的面向对象查询. 作为对照,本篇文章将上篇文章的八个HQL查询全部用Criteria查询写一遍,读者可以自己感受下他们之间的区别. 本篇文章的代码可以到NHibernate查询下载 1.创建Criteria对象,查询所有Cu…
摘要 NHibernate的二级缓存由SessionFactory管理,由所有Session共享. NHibernate缓存读取顺序: 首先从一级缓存中读取,如果一级缓存对象存在,则读取一级缓存对象并返回 如果一级缓存对象不存在,则读二级缓存. 如果二级缓存对象存在,则读取二级缓存里的对象并返回 如果二级缓存对象不存在,则读数据库 二级缓存一般存储不发生变化的数据,如果数据经常要进行修改删除操作,不宜使用缓存 1. NHibernate二级缓存设置 NHibernate的二级缓存在hiberna…
摘要 这篇文章介绍NHibernate最实用的内容:关系映射. NHibernate的关系映射方式有三种: Set:无序对象集合,集合中每一个元素不能重复. List:有序对象集合,集合中的元素可以重复. Bag:无序对象集合,集合中的元素可以重复. Map:键值对集合,相当于Hashtable或Dictionary. 这篇文章以一对多关系为例,介绍怎样在NHibernate中建立一对多关系映射.一对多关系是在现实项目中最经常碰到的一种关系.后面文章介绍多对多关系. 这篇文章的附件:NHiber…