摘要 从这一节起,介绍NHibernate Mapping的内容.前面文章都是使用的NHibernate XML Mapping.NHibernate XML Mapping是NHibernate最早最成熟的Mapping方法.其他的Mapping方法都是基于XML Mapping的思想进行的“变种”,要么暂时不能完全像XML Mapping那样功能丰富.其他的Mapping方法目前包括:Fluent Mapping.Attribute Mapping和Mapping by Convention…
摘要 上一篇文章介绍了Fluent NHibernate基础知识.但是,Fluent NHibernate提供了一种更方便的Mapping方法称为Auto Mapping.只需在代码中定义一些Convention继承类,针对具体的属性.主键.关系.组件指定Mapping的规则,在实体类里定义简单的POCO对象就可以完成整个数据库的自动映射.Auto Mapping适合全新的系统开发,即是在系统设计时还没有数据库的时候.有点像Microsoft Entity Framework的Code Firs…
摘要 NHibernate提供了多种查询方式,最早的HQL语言查询.Criteria查询和SQL Query,到NHibernate 3.0的Linq NHibernate,NHIbernate 4.0又添加了Query Over.每种方式各有优缺点,任何一个SQL查询可以使用任何查询方式查询.根据程序员每种方式掌握的情况,可以使用不同的查询方式.本篇文章介绍HQL语言查询.HQL(Hibernate Query Language)是NHibernate特有的面向对象查询语言,他具有继承.多态的…
摘要 这篇文章介绍了如何创建一个简单的使用NHibernate的控制台应用程序,包括使用NuGet.简单的配置.单表映射.对NHibernate配置文件添加智能提示.使用ISessionFactory和ISession. 1. 环境准备 Visual Studio 2015.SQL Server 2008或者SQL Server 2008 R2. 2. 创建工程 1)创建空控制台应用程序NHibernateDemoApp. 2)添加NHibernate到工程.右键NHibernateDemoAp…
摘要 NHibernate是一个成熟的开源的面向对象的.net映射框架.大量的实际项目中正在使用该框架.他是建立在ADO.Net基础之上.目前的版本是NHibernate 4.0.4.本系列文章都是基于NHibernate 4.0版本. 1. 什么是ORM? ORM指Object Relational Mapping.他是一种让你可以在面向对象和关系数据库之间互相映射的技术. 现实世界中,每个事物都是对象.我们称具有自己数据属性的事物为对象. 关系世界都是以集合为基础的表和数据行记录.这不同于面…
摘要 NHibernate有多种配置方法,代码,xml文件,以及Fluent NHibernate.这里只介绍最常用的两种NHibernate配置方法:通过代码和通过配置文件. 1. 通过代码配置 通过代码配置就是前面文章里代码那样,调用cfg.DataBaseIntegration方法,传入委托表达式,配置连接字符串等信息. 2. 通过XML文件配置 在工程根目录下添加文件hibernate.cfg.xml该文件中输入代码: <?xml version="1.0" encodi…
摘要 NHibernate对象持久化 NHibernate对象的三个状态:临时态.持久态.游离态(托管态) NHibernate三状态的相互转化 1. NHibernate对象持久化 NHibernate的对象持久化是指将NHibernate的POCO对象写入到持久化对象集合,POCO对象变成持久化状态,以及从数据库中用NHibernate查询出POCO对象,写入到持久化对象集合,查询出的POCO对象具有持久化状态的过程. NHibernate用XML映射的实体对象类符合POCO(简单传统CLR…
摘要 有三种方式可以实现NHibernate运行时监控,监控的信息包括:执行了的SQL语句.NHibernate执行过程.数据库性能分析.这对我们学习NHibernate有很大的帮助,在工作中也能快速定位问题,最好是能够掌握他们. 1. LogSqlInConsole 修改上一节的SessionFactory属性,添加行x.LogSqlInConsole = true; public static ISessionFactory SessionFactory { get { if (_sessi…
摘要 Nhibernatea缓存非常强大,按照缓存存储在Session对象还是SessionFactory对象分为一级缓存和二级缓存. 一级缓存存在于Session对象里,也叫Session缓存,由Session进行管理.一级缓存是NHibernate内置的缓存. 二级缓存存在于SessionFactory对象里,也叫SessionFactory缓存,由SessionFactory进行管理,并且有大量的第三方dll对他进行扩展,他是一种“可插拔式”的缓存. 这一节主要讲一级缓存,后面一篇文章介绍…
摘要 这一篇文章介绍在NHibernate 3.2里引入的Query Over查询,Query Over查询跟Criteria查询类似.首先创建IQueryOver对象,然后通过调用该对象的API函数,进行对象查询.这篇文章使用Query Over重写之前所有的查询. 本篇文章的代码可以到NHibernate查询下载 1.创建IQueryOver对象,返回所有Customer信息 public IList<Customer> QueryAllOver() { return Session.Qu…