zoukankan      html  css  js  c++  java
  • 框架:NHibernate学习目录

    NHibernate 基本配置 (第一篇)

    摘要: 使用NHibernate最重要的一步就是配置,如果连NHibernate都还没有跑的起来,谈何学习。今天就来详解一下NHibernate的配置。一、NHibernate基本配置 NHibernate配置要注意的有: 1、NHibernate需要一个自定义的配置节点,一般放在Web.confi...阅读全文
     
    NHibernate 之持久化类、拦截器 (第二篇)
    摘要: 一、持久化类中成员标量的要求 作为被NHibernate使用的持久化类,必须满足以下几点要求: 1、声明读写属性 在NHibernate的使用中,持久化类的成员变量必须声明对应的属性,NHibernate支持public、internal、protected三种访问修饰符。 2、提供标识属性 持久化类必须提供一个标识属性,标识属性对应数据库的主键。 当然这个是可选的,并非强制性,但是强烈建议这么做。这个标识属性可以叫任何名字,任何类型。 3、属性必须是非密封的和虚的 持久化类中所有的属性,必须声明为非密封的,也就是不能带有sealed。而且必须带有virtual...阅读全文
     
    NHibernate 映射基础(第三篇) 简单映射、联合主键
    摘要: NHibernate完全靠配置文件获取其所需的一切信息,其中映射文件,是其获取数据库与C#程序关系的所有信息来源。一、简单映射 下面先来一个简单的例子,然后随着不断地对这个例子修修改改,从而真正了解映射文件。具体的资料可以查看http://www.cnblogs.com/kissdodog/archive/2013/02/21/2919886.html 先来看一张表: 映射文件Product.hbm.xml: PersonModel.cs:namespace Model{ public class...阅读全文
     
    NHibernate 集合映射基础(第四篇) - 一对一、 一对多、多对多小示例
    摘要: 映射文件,用于告诉NHibernate数据库里的表、列于.Net程序中的类的关系。因此映射文件的配置非常重要。 一、一对一 NHibernate一对一关系的配置方式使用<one-to-one>配置节点。 当我们两个表拥有相同的主键字段,主键值相同的需要关联在一起。比较典型的一个例子是,一个对象的属性阅读全文
     
    NHibernate 集合映射深入 (第五篇) <set>,<list>,<map>,<bag>
    摘要: 一、集合外键 在NHibernate中,典型的用于映射集合类的元素有,,,,,。 我们回到上一篇,集合映射基础当中的一对多查询。对于集合类型: public virtual ISet ListPerson { get; set; } NHibernate的配置文件与之对应的是: 那么、、、、、这些东西的用法以及它们之间的区别是什么呢? 1. ISet集合中的对象是唯一的,无序的,不能通过索引、key值访问。 在.Net中并没有与对应的类。因此当我们的配置文件是配置集合关系的时候,Model持久化类中ISet必须使用NHibernate的...阅读全文
     
     
    NHibernate 组件基础 (第六篇)
    摘要: 一、组件简介 组件(Component)可以理解为被一个对象所包含的对象而持久化,而并非一个实体。简单说来,假如数据库有FirstName,LastName这两个字段,我们在C#中可以将这两个字段提取出来作为一个Name对象使用。 示例,首先建一张表,并添加数据如下: Person.hbm.xml Model:namespace Model{ public class PersonModel { public virtual int Id { get; set;...阅读全文
     
    NHibernate 延迟加载与立即加载 (第七篇)
    摘要: 一、延迟加载 延迟加载可以理解为:当需要用的时候才加载。 假设我们数据库有一个Person对象,一个Country对象,其中Person属于Country,一对多关系。当我们Get()一个Person对象的时候。并不立即把Country对象也加入来,而是当我们的代码执行到要通过Person调用Country对象的时候,NHibernate才到数据库去查询对应的Country对象,这就叫延迟加载。相反,如果我们Get()一个Person对象,并且连与此Person对象相关联的Country对象也一起加载到程序中,这就叫立即加载。 延迟加载必须在Session的周期内,如果查询了数据,但是程...阅读全文
     
    NHibernate 数据查询之Linto to NHibernate (第八篇)
    摘要: 刚学NHibernate的时候觉得,HQL挺好用的,但是终归没有与其他技术相关联,只有NHibernate用到,一来容易忘记,二来没有智能提示,排除错误什么的都不给力,直到看到一个同事用Linq to NHibernate,那代码是相当的清晰明了,其实什么条件查询,HQL什么的感觉只是一个NHibe阅读全文
     
    NHibernate Linq查询 扩展增强 (第九篇)
    摘要: 在上一篇的Linq to NHibernate的介绍当中,全部是namespace NHibernate命名空间中的IQueryOver<TRoot, TSubType>接口提供的。IQueryOver<TRoot, TSubType>这个借口实际上会被翻译成条件查询(Criteria Querie阅读全文
     
    NHibernate之一级缓存(第十篇)
    摘要: NHibernate的一级缓存,名词好像很牛B,很难。实际上就是ISession缓存。存储在ISession的运行周期内。而二级缓存则存储在ISessionFactory内。一、ISession一级缓存测试 ISession默认开启一级缓存,不需要任何配置。ISession缓存在ISession创建后就可以使用,以后每次通过此ISession操作数据时,ISession会检测自身是否缓存有相应的数据,如果有则直接返回。如果没有,这时才查询数据库返回,同时缓存到ISession。当释放ISession实例的时候,缓存自动销毁。 示例: 首先我们先开启配置文件中的show_sql节点: ...阅读全文
     
    NHibernate二级缓存(第十一篇)
    摘要: 一、NHibernate二级缓存简介 NHibernate由ISessionFactory创建,可以被所有的ISession共享。 注意NHibernate查找缓存的顺序,在使用ISession操作数据时,NHibernate会先从一级缓存中查找需要的数据,如果一级缓存不存在需要的数据,则查找二级缓存,如果二级缓存存在所需数据,则直接使用缓存中的数据。如果二级缓存都没有,那么才执行SQL语句,从数据库中查找缓存。 NHibernate本身提供了一个基于Hashtable的HashtableCache缓存,不过功能有限且性能不高。不适合用于大型应用程序,不过我们可以使用第三方缓存提供程...阅读全文
     
     
    NHibernate使用MemCache二级缓存
    摘要: 首先,当然是安装MemCache服务器端了。 然后配置过程,仅仅两个问题。 1、NHibernate要与NHibernate.Cache的版本要一致。否则,NHibernate.Caches.MemCache.MemCacheProvider无法实例化。 2、要引用log4net,否则Memcached.ClientLibrary.SockIOPool无法实例化。 App.config: NHibernate.Dialect.MsSql2008Dialect NHibernate.Connection....阅读全文
     
     
    NHibernate 操作视图 第十三篇
    摘要: 在NHibernate中,可以把视图当表一样操作,只需要记住一点就是,视图是只读的,因此映射实体的setter应该改为protected。 新建一个视图如下: 持久化类: public class CountryPersonModel { public virtual int PersonId { get; protected set; } public virtual string PersonName { get; protected set; } public virtual string CountryName { ge...阅读全文
     
     
    NHibernate 存储过程 第十四篇
    摘要: NHibernate也是能够操作存储过程的,不过第一次配置可能会碰到很多错误。一、删除 首先,我们新建一个存储过程如下: CREATE PROC DeletePerson @Id int AS DELETE FROM Person WHERE PersonId = @Id; 修改映射文件,添加删除对象的存储过程: DeletePerson ? 执行存代码: using (ISession session = sessionFactory.Op...阅读全文
     
    NHibernate 过滤器(第十五篇)
    摘要: NHibernate过滤器相当于定义一个非常类似于类和集合上使用的where子句。ISession 中默认是不启用过滤器的,必须通过ISession.EnableFilter()方法显式的启用。 该方法返回被启用的IFilter的实例。这也支持链式操作。 过滤器主要的配置都在映射文件内完成。来看示例: 操作: static void Main(string[] args) { ISessionFactory _sessionFactory =...阅读全文
     
     
    NHibernate 继承映射(第十六篇)
    摘要: 在NHibernate的映射中,关于继承的映射策略有3种方式单表继承类表继承具体表继承 另外还有一种比较特别的多态映射隐式多态 下面分别来阐述NHibernate继承映射的各种策略要点。一、单表继承 单表继承的方式是,所有的字段都放在一个表中,用一个字段来区分子类。使用配置节点配置子类。 看DEMO,首先新建一张Animal表如下: 映射文件:Animal.hbm.xml: //discriminator-value用来标记表中哪些行是青蛙 映射文件:Fish.hbm.xml ...阅读全文
     
     
    NHibernate之配置文件属性说明
    摘要: 一、NHibernate配置所支持的属性属性名用途dialect设置NHibernate的Dialect类名 - 允许NHibernate针对特定的关系数据库生成优化的SQL可用值:full.classname.of.Dialect, assemblydefault_schema在生成的SQL中, 将给定的schema/tablespace附加于非全限定名的表名上.可用值:SCHEMA_NAMEuse_outer_join允许外连接抓取,已弃用,请使用max_fetch_depth。可用值:true|falsemax_fetch_depth为单向关联(一对一, 多对一)的外连接抓取(outer阅读全文
     
     
    NHibernate之映射文件配置说明
    摘要: 1.hibernate-mapping 这个元素包括以下可选的属性。schema属性,指明了这个映射所引用的表所在的schema名称。假若指定了这个属性, 表名会加上所指定的schema的名字扩展为全限定名。假若没有指定,表名就不会使用全限定名。default-cascade 指定了未明确注明cascade属性的.Net属性和集合类.Net会采取什么样的默认级联风格。 auto-import属性默认让我们在查询语言中可以使用非全限定名的类名。assembly和 namespace指定了持久化类的应用程序集名称和其所在的名称空间名。 各选项说明:(1)schema (...阅读全文
     
     
    NHibernate 帮助类(单例实际运用)
    摘要: 在NHibernate中,ISessionFactory是线程安全的,对应一个数据库。它是生成ISession的工厂。而ISession是线程不安全的。 创建一个ISessionFactory需要消耗比较多的资源。因此,我们只在程序初始化的时候创建一次,以后就一直使用这个ISessionFactory。 而ISession的创建只消耗很少的资源。因此我们可以随意创建。一、原始单例模式封装的ISessionFactory 因此,对于ISessionFactory,我们使用饿汉单例模式实现它。 原始饿汉单例模式封装ISessionFactory实例: //密封类 ...阅读全文
     
     
  • 相关阅读:
    LSMW TIPS
    Schedule agreement and Delfor
    Running VL10 in the background 13 Oct
    analyse idoc by creation date
    New Journey Prepare
    EDI error
    CBSN NEWS
    Listen and Write 18th Feb 2019
    Microsoft iSCSI Software Target 快照管理
    通过 Microsoft iSCSI Software Target 提供存储服务
  • 原文地址:https://www.cnblogs.com/Hackson/p/7054664.html
Copyright © 2011-2022 走看看