本文翻译自NHibernate官方文档NHibernate Reference Documentation 4.1. 受限于个人知识水平,有些地方翻译可能不准确,但是我还是希望我的这些微薄的努力能为他人提供帮助. 侵删. 关于继承映射的三个继承映射方案 NHibernate支持三个基本的继承映射隐射方案. 一个继承一张表(table per class hierarchy) 一个子类额外信息一张表(table per subclass) 一个子类全部信息一张表(table per concret…
映射声明 对象/关系映射在XML文件中配置.mapping文件这样设计是为了使它可读性强并且可修改.mapping语言是以对象为中心,意味着mapping是围绕着持久化类声明来建立的,而不是围绕数据表. 要注意的是,尽管很多NHibernate使用者选择手动定义XML文件,但是仍然有很多工具可以用来生成mapping文件,包括NHibernate.Mapping.Attributes 库和各种各样基于模板的代码生成工具(CodeSmith, MyGeneration). 让我们用一个mappin…
由于NHibernate是被设计应用在许多不同环境中的,因此它存在很多配置参数.幸运的是,这些参数大多都有合理的默认值,而且NHibernate发布的时候伴随着一个App.config 例子(可在src\NHibernate.Test找到),这个例子已经包含了了很多配置信息.你通常只要把这个文件放如你的项目中然后定制它就行了. 编程式配置 一个NHibernate.Cfg.Configuration 实例表示一个完整的应用程序里面的类型和SQL数据库mapping信息的集合.Configurat…
A naive approach t7o inserting 100 000 rows in the database using NHibernate might look like this: 一个简单的使用NHibernate来向数据库插入100000条记录的操作的方式也许是这样子的: ISession session = sessionFactory.OpenSession(); ITransaction tx = session.BeginTransaction(); ; i<; i+…
重点 NHIbernate处理只读对象的方式可能和你在别处看到的不同.不正确的使用方式可能造成不可预料的结果. 当一个实体是只读的时候: NHIbernate不会对实体的简单属性和单向关联数据检查数据是否是脏数据 NHibernate不会对实体的简单属性和单向关联数据进行更新操作 NHibernate不会更新只读对象的版本信息,尽管实体的简单属性和单向关联数据发生了改变 在某些情况下,NHibernate对待一些只读实体类型和费只读类型是一样的: Nhibernate级联操作定义在实体mappi…
NHibernate本身并不是一个数据库.它是一个轻量级的对象-关系映射工具.因此,它的事务管理代理给对应的数据库连接.如果这个连接代理了一个分布式的事务,ISession管理的操作就会自动成为整个分布式事务的一部分.NHibernate可以被当作是一个简单的ADO.NET的配适器,再加上一些面向对象的语法. 配置,session和工厂 ISessionFactory是一个耗资源的线程安全对象,因此被所有应用程序线程共享.一个ISession是一个一次性的耗资源的线程不安全对象,对应一个单独的业…
总体概览 一个非常高层次的NHibernate架构: 这个图展示了NHibernate使用数据库和配置信息来为应用程序提供持久化服务(和持久化对象). 我们想展示一个更加详细的运行时架构.但是NHibernate 很灵活并且支持多种架构方式.我们将会展示两个极端.对于“轻量级”架构,应用程序管理自身的ADO.NET连接和事务.这个方式仅仅使用了很小的一部分NHibernate API: 对于“重量级”架构,它将应用程序的ADO.NET抽象出来,然后使用NHibernate 管理其中的细节. 以下…
持久化类是一个应用程序中的类,主要用来实现业务逻辑(例如,在电商应用中的客户和订单类).持久化类,就像它的名字一样,生命周期短暂并且用来持久化的据库对象实例. 如果这些类的构造能够依照一些简单的原则,比如说Plain Old CLR Object (POCO)编程模型,NHibernate能够工作得最好. 一个简单的POCO例子 大多数的.NET应用程序需要一个持久化类来表示猫科动物. using System; using System.Collections.Generic; namespa…
对于应用程序来说,能够对NHibernate内部发生的事件做出响应式很有用的.这能够有助于实现一些类的功能或者扩展NHibernate的功能. 拦截器 IInterceptor接口提供了应用程序session的的回调方法,使得应用程序能够在持久化对象进行增删改查之前检测和/或者操作持久化对象的属性.一个应用场景是追踪审计信息.例如,下面的IInterceptor接口会在IAuditable实例新增的时候自动设置createTimeStamp,在IAuditable实例更新的时候自动更新lastU…
OpenGL ES着色器语言之语句和结构体(官方文档第六章) OpenGL ES着色器语言的程序块基本构成如下: 语句和声明 函数定义 选择(if-else) 迭代(for, while, do-while) 跳跃(discard, return, break, continue) 6.1函数定义   着色器是由一系列全局声明和函数定义组成的.函数声明规范如下: // prototype returnType functionName (type0 arg0, type1 arg1, ...,…