![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
【ORM】NHibernate框架
三天不学习
学海无涯回头是岸
展开
-
NHibernate 基本配置 (第一篇)
使用NHibernate最重要的一步就是配置,如果连NHibernate都还没有跑的起来,谈何学习。今天就来详解一下NHibernate的配置。一、NHibernate基本配置 NHibernate配置要注意的有: 1、NHibernate需要一个自定义的配置节点,一般放在Web.config里或App.config里面,当然你可以自己定义实际位置。 示例如下转载 2016-09-21 17:10:09 · 1201 阅读 · 0 评论 -
NHibernate之映射文件配置说明
1. hibernate-mapping 这个元素包括以下可选的属性。schema属性,指明了这个映射所引用的表所在的schema名称。假若指定了这个属性, 表名会加上所指定的schema的名字扩展为全限定名。假若没有指定,表名就不会使用全限定名。default-cascade 指定了未明确注明cascade属性的.Net属性和集合类.Net会采取什么样的默认级联风格。 auto-i转载 2016-09-21 17:29:38 · 824 阅读 · 0 评论 -
NHibernate之配置文件属性说明
一、NHibernate配置所支持的属性属性名用途dialect设置NHibernate的Dialect类名 - 允许NHibernate针对特定的关系数据库生成优化的SQL可用值: full.classname.of.Dialect, assemblydefault_schema在生成的SQL中, 将给定的schema/ta转载 2016-09-21 17:28:25 · 893 阅读 · 0 评论 -
NHibernate 帮助类(单例实际运用)
在NHibernate中,ISessionFactory是线程安全的,对应一个数据库。它是生成ISession的工厂。而ISession是线程不安全的。 创建一个ISessionFactory需要消耗比较多的资源。因此,我们只在程序初始化的时候创建一次,以后就一直使用这个ISessionFactory。 而ISession的创建只消耗很少的资源。因此我们可以随意创建。一转载 2016-09-21 17:26:38 · 612 阅读 · 0 评论 -
NHibernate 继承映射(第十六篇)
在NHibernate的映射中,关于继承的映射策略有3种方式单表继承类表继承具体表继承 另外还有一种比较特别的多态映射隐式多态 下面分别来阐述NHibernate继承映射的各种策略要点。一、单表继承 单表继承的方式是,所有的字段都放在一个表中,用一个字段来区分子类。使用配置节点配置子类。 看DEMO,首先新建一张Animal表如下:转载 2016-09-21 17:25:23 · 518 阅读 · 0 评论 -
NHibernate 过滤器(第十五篇)
NHibernate过滤器相当于定义一个非常类似于类和集合上使用的where子句。ISession 中默认是不启用过滤器的,必须通过ISession.EnableFilter()方法显式的启用。 该方法返回被启用的IFilter的实例。这也支持链式操作。 过滤器主要的配置都在映射文件内完成。来看示例:xml version="1.0" encoding="utf-8" ?>转载 2016-09-21 17:24:32 · 438 阅读 · 0 评论 -
NHibernate 存储过程 第十四篇
NHibernate也是能够操作存储过程的,不过第一次配置可能会碰到很多错误。一、删除 首先,我们新建一个存储过程如下: CREATE PROC DeletePerson @Id int AS DELETE FROM Person WHERE PersonId = @Id; 修改映射文件,添加删除对象的存储过程:xml versio转载 2016-09-21 17:23:44 · 598 阅读 · 0 评论 -
NHibernate 操作视图 第十三篇
在NHibernate中,可以把视图当表一样操作,只需要记住一点就是,视图是只读的,因此映射实体的setter应该改为protected。 新建一个视图如下: 持久化类: public class CountryPersonModel { public virtual int PersonId { get; protected转载 2016-09-21 17:22:47 · 495 阅读 · 0 评论 -
NHibernate二级缓存(第十一篇)
一、NHibernate二级缓存简介 NHibernate由ISessionFactory创建,可以被所有的ISession共享。 注意NHibernate查找缓存的顺序,在使用ISession操作数据时,NHibernate会先从一级缓存中查找需要的数据,如果一级缓存不存在需要的数据,则查找二级缓存,如果二级缓存存在所需数据,则直接使用缓存中的数据。如果二级缓存都没有,转载 2016-09-21 17:20:43 · 1235 阅读 · 0 评论 -
NHibernate之一级缓存(第十篇)
NHibernate的一级缓存,名词好像很牛B,很难。实际上就是ISession缓存。存储在ISession的运行周期内。而二级缓存则存储在ISessionFactory内。一、ISession一级缓存测试 ISession默认开启一级缓存,不需要任何配置。ISession缓存在ISession创建后就可以使用,以后每次通过此ISession操作数据时,ISession会检测自身转载 2016-09-21 17:19:35 · 488 阅读 · 0 评论 -
NHibernate Linq查询 扩展增强 (第九篇)
在上一篇的Linq to NHibernate的介绍当中,全部是namespace NHibernate命名空间中的IQueryOver接口提供的。IQueryOver这个借口实际上会被翻译成条件查询(Criteria Queries)。 实际上Linq to NHibernate更加强大。我们先引入命名空间NHibernate.Linq,这里面有Linq to NHibernate更强转载 2016-09-21 17:18:18 · 1148 阅读 · 0 评论 -
NHibernate 数据查询之Linto to NHibernate (第八篇)
刚学NHibernate的时候觉得,HQL挺好用的,但是终归没有与其他技术相关联,只有NHibernate用到,一来容易忘记,二来没有智能提示,排除错误什么的都不给力,直到看到一个同事用Linq to NHibernate,那代码是相当的清晰明了,其实什么条件查询,HQL什么的感觉只是一个NHibernate用到,很容易忘记。而SQL跟Linq是经常用的东西,还是SQL和Linq比较划算。今天就来转载 2016-09-21 17:17:12 · 2519 阅读 · 0 评论 -
NHibernate 延迟加载与立即加载 (第七篇)
一、延迟加载 延迟加载可以理解为:当需要用的时候才加载。 假设我们数据库有一个Person对象,一个Country对象,其中Person属于Country,一对多关系。当我们Get()一个Person对象的时候。并不立即把Country对象也加入来,而是当我们的代码执行到要通过Person调用Country对象的时候,NHibernate才到数据库去查询对应的Country对象转载 2016-09-21 17:16:12 · 1073 阅读 · 0 评论 -
NHibernate 组件基础 (第六篇)
一、组件简介 组件(Component)可以理解为被一个对象所包含的对象而持久化,而并非一个实体。简单说来,假如数据库有FirstName,LastName这两个字段,我们在C#中可以将这两个字段提取出来作为一个Name对象使用。 示例,首先建一张表,并添加数据如下: Person.hbm.xmlxml version="1.0" encodi转载 2016-09-21 17:15:19 · 451 阅读 · 0 评论 -
NHibernate 集合映射深入 (第五篇) <set>,<list>,<map>,<bag>
一、集合外键 在NHibernate中,典型的用于映射集合类的元素有,,,,,。 我们回到上一篇,集合映射基础当中的一对多查询。对于集合类型: public virtual ISet ListPerson { get; set; } NHibernate的配置文件与之对应的是: set name="ListPerson" table="Pe转载 2016-09-21 17:14:20 · 1067 阅读 · 0 评论 -
NHibernate 集合映射基础(第四篇) - 一对一、 一对多、多对多小示例
映射文件,用于告诉NHibernate数据库里的表、列于.Net程序中的类的关系。因此映射文件的配置非常重要。一、一对一 NHibernate一对一关系的配置方式使用配置节点。 当我们两个表拥有相同的主键字段,主键值相同的需要关联在一起。比较典型的一个例子是,一个对象的属性太多,常用的和不常用的分开存放。例如一个文章表,我们将文章内容字段,提取出来作为一个单独的字段,因转载 2016-09-21 17:13:28 · 2227 阅读 · 0 评论 -
NHibernate 映射基础(第三篇) 简单映射、联合主键
NHibernate完全靠配置文件获取其所需的一切信息,其中映射文件,是其获取数据库与C#程序关系的所有信息来源。一、简单映射 下面先来一个简单的例子,然后随着不断地对这个例子修修改改,从而真正了解映射文件。具体的资料可以查看http://www.cnblogs.com/kissdodog/archive/2013/02/21/2919886.html 先来看一张表:转载 2016-09-21 17:12:30 · 997 阅读 · 0 评论 -
NHibernate 之持久化类、拦截器 (第二篇)
一、持久化类中成员标量的要求 作为被NHibernate使用的持久化类,必须满足以下几点要求: 1、声明读写属性 在NHibernate的使用中,持久化类的成员变量必须声明对应的属性,NHibernate支持public、internal、protected三种访问修饰符。 2、提供标识属性 持久化类必须提供一个标识属性,标识属性对应数据库转载 2016-09-21 17:11:33 · 810 阅读 · 0 评论 -
HQL常用语句
// HQL: Hibernate Query Language.// 特点:// >> 1,与SQL相似,SQL中的语法基本上都可以直接使用。// >> 2,SQL查询的是表和表中的列;HQL查询的是对象与对象中的属性。// >> 3,HQL的关键字不区分大小写,类名与属性名是区分大小写的。// >> 4,SELECT可以省略. // 1,简单的查询,Employee为实体名原创 2016-09-30 15:19:52 · 460 阅读 · 0 评论