NHibernate延迟加载机制 - NHibernate 2.1.22011-07-24 博客园 ricccNHibernate实现延迟加载的主要结构:

BuildSessionFactory的时候:1. 根据proxyfactory.factory_class的配置创建IProxyFactoryFactory对象2. 如果use_proxy_validator配置为true(默认为true),加载实体映射元数据之后,对需要代理的 实体使用 IProxyFactoryFactory的ProxyValidator进行验证(例如要求实体有默认构造器、方法属性必 须为virtual类型等)3. 为需要代理的实体类型创建IProxyFactory,并调用IProxyFactory对象的PostInstantiate方法对每一个需要代理的实体类型都会创建一个IProxyFactory对象并缓存,创建代理对象则通过 IProxyFactory的GetProxy方法完成AbstractProxyFactory主要是实现PostInstantiate方法,这个方法主要是将创建代理对象所需的信息 记录下来,例如 EntityName(字符串的实体类名)、PersistentClass(代理对象的System.Type)、 Interfaces(代理对象需要额外实现的接口,例如INHibernateProxy),其他几个记录的属性则为单主键 和组合主键id的get、set方法ProxyFactory则主要实现GetProxy方法,使用Castle或者LinFu等动态代理库以及上述信息创建代理对 象