码迷,mamicode.com
首页 > 移动开发 > 详细

NHibernate剖析:Mapping篇之Mapping-By-Code(1):概览

时间:2015-08-12 10:18:08      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

ModelMapper概述

NHibernate3.2版本集成Mapping-By-Code(代码映射),其设计思想来源于ConfORM,代码整体构思基于"Loquacious"模式,而不是"fluent-interface"。在NHibernate.Mapping.ByCode命名空间下。

Mapping-By-Code(代码映射)与其他映射方式不同,Mapping-By-Code是手动配置实体映射,编译映射并转换为HbmMapping对象, 调用Configuration类的void AddDeserializedMapping(HbmMapping mappingDocument, string documentFileName)方法配置Configuration,其他映射(例如Fluent NHibernate、MyGeneration、Visual NHibernate等)实际上是调用AddXmlReader()方法后,反序列化为HbmMapping对象,然后再调用AddDeserializedMapping方法配置Configuration。 最后BuildSessionFactory。Mapping-Path示意图如下:

技术分享

ModelMapper架构

ModelMapper核心是配置领域模型映射,编译并转换为HbmMapping对象。按照其功能ModelMapper类有四个部分,分别是:

  • 特定映射(Specific Mapper)
  • Conformist映射(Conformist Mapping)
  • 事件拦截器(Events Interceptor)
  • 编译映射(CompileMapping)

特定映射(Specific Mapper)

特定映射(Specific Mapper),对特定的类或者特定的某个组件设置定制化映射。由Class、Subclass、JoinedSubclass、UnionSubclass、Component方法提供。

技术分享

Conformist映射(Conformist Mapping)

Conformist映射(Conformist Mapping)是以Class-By-Class方式映射,然后加入ModelMapper类。

技术分享

事件拦截器(Events Interceptor)

在每种映射行为前后,都定义了事件拦截器,可以通过事件拦截器定义约束。从设计角度上看是对ModelMapper类提供了扩展性。

技术分享

编译映射(CompileMapping)

把程序中的领域实体的映射编译并转换为NHibernate使用的HbmMapping对象。CompileMappingFor、CompileMappingForEach方法指定特定领域实体,CompileMappingForAllExplicitAddedEntities和CompileMappingForEachExplicitAddedEntity方法已经显式指定提供映射的实体。

技术分享

结语

这篇文章首先了解NHibernate3.2新增的Mapping-By-Code(代码映射)的原理,后续的文章以这篇文章为基础学习Mapping-By-Code各种映射。

版权声明:本文为博主http://www.zuiniusn.com原创文章,未经博主允许不得转载。

NHibernate剖析:Mapping篇之Mapping-By-Code(1):概览

标签:

原文地址:http://blog.csdn.net/u013948191/article/details/47439185

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!