nHibernate 3.2新增了一种mapping by code的映射策略,很有意思。你可以自定义约定,并且按照约定定制自动映射策略,面对遗留数据库时这个功能往往很有用,另外,由于mapping by code是基于代码的(而不是xml文件),对domain object进行重命名的重构操作会非常方便,不用跑到xml映射文件查找字符串了。

要使用Mapping by Code很简单,

第一步,配置SessionFactory,使nhibernate自动扫描项目中所有继承ClassMapping的类,并将其解释为映射

public class NHibernateHelper
{private static ISessionFactory _sessionFactory;public static ISessionFactory SessionFactory{get{if (_sessionFactory == null){var configuration = new Configuration();configuration.Configure();var mappers = new ModelMapper();mappers.AddMappings(Assembly.GetExecutingAssembly().GetExportedTypes());var hbmMapping = mappers.CompileMappingForAllExplicitlyAddedEntities();Console.WriteLine(hbmMapping.AsString());configuration.AddDeserializedMapping(hbmMapping, "");_sessionFactory = configuration.BuildSessionFactory();}return _sessionFactory;}}public static ISession OpenSession(){return SessionFactory.OpenSession();}
}

第二步,为每个实体类编写映射类,映射类只需继承ClassMapping就可以被nhibernate识别。

关于如何编写映射类,参考以下文章:

nHibernate Mapping By Code - One to One

nHibernate Mapping By Code - One to Many and Many to One

nHibernate Mapping By Code - Many to Many

参考文章:

NH Mapping by code VS the Untouchable DB

Using NH3.2 mapping by code for Automatic Mapping

NHibernate剖析:Mapping篇之Mapping-By-Code(2):运用ModelMapper


转载请注明出处

示例代码基于nHibernate3.3.1

转载于:https://www.cnblogs.com/iamzhenyu/archive/2012/07/01/2572216.html

nHibernate Mapping By Code - Introduction相关推荐

  1. NHibernate Mapping Attribute实现复合主键映射

    当我在学习使用NHibernate Mapping Attribute的时候,遇到复合主键映射问题,查询了很多资料,也向朋友请教过,由于相关资料不多,中间走了些弯路,好在最终较好解决了,现记录分享如下 ...

  2. Some thoughts on my own O/R Mapping or Code Generation tools

    Code tells: Categoryhas_many Forums,Name,nSortOrder,Forumbelongs_to Category,has_many Users as Moder ...

  3. NHibernate ConfORM Mapping

    前言 昨天写了一篇fluent nhibernate通过约定的代码映射方式,NH在3.0版本以后已经集成了conform的代码映射方式,一直没注意也没使用过,今天试试怎么样. 步骤 1.通过confo ...

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

    ModelMapper概述 NHibernate3.2版本号集成Mapping-By-Code(代码映射),其设计思想来源于ConfORM.代码总体构思基于"Loquacious" ...

  5. [NHibernate]使用AttributeNHibernate.Mapping.Attributes

    系列文章 [Nhibernate]体系结构 [NHibernate]ISessionFactory配置 [NHibernate]持久化类(Persistent Classes) [NHibernate ...

  6. 使用NHibernate 3.2实现Repository(ORuM)(三)NHibernate、Mapping、Mapping-By-Code

    NHibernate使用时通常是先定义实体类,再为实体类映射数据库关系,NHibernate映射是使用XML文件形式的. 当我们Confrontation NHibernate时Mapping的过程: ...

  7. Simple NHibernate Architecture[from]

    原文地址:http://www.codeproject.com/aspnet/NHibernateArchitecture.asp Download source - 2,523.7 KB Intro ...

  8. nhibernate处理多数据库

    nhibernate处理多数据库 When using NHibernate in an ASP.NET application it is important to manage sessions ...

  9. [Hibernate]在VS2010中应用NHibernate 3.2与MySQL

    在VS2010中应用NHibernate 3.2与MySQL 罗朝辉 (http://kesalin.cnblogs.com/) 本文遵循"署名-非商业用途-保持一致"创作公用协议 ...

最新文章

  1. Android自定义组件
  2. 笔记本的处理器型号怎么区别好坏
  3. scrapy 安装_安装scrapy时出错
  4. vim 粘贴代码格式
  5. [NOI2017]泳池
  6. 通化红灯_我们如何构建廉价,可扩展的架构来对世界进行卡通化!
  7. python 将图片与字符串相互转换
  8. 归并排序python实现
  9. 关于spring注入
  10. 24.root, alias
  11. python数据读写 panda(to_csv和read_csv)【读取dat文件】【写入dat文件】【非csv文件并且有多列数据时】
  12. easyrecovery软件如何恢复丢失数据-注册码-序列号-密钥最新绿色下载版
  13. android蓝牙 助手源码,蓝牙串口助手(Android Studio源码)
  14. ping 端口是否开放(Mac、Linux、Windows系统)
  15. 【190112】VC++ 电话簿通讯录程序源代码
  16. 通达信标记符号_通达信各种符号
  17. linux est 时间,Linux 时间标准简介
  18. 点餐微信小程序【源码好又多】
  19. 翻阅笔记所得杂记若干
  20. c语言练习:输入一个字符,如果是数字字符就输出,如果不是则输出“不是数字字符”。

热门文章

  1. React开发(261):react项目理解 ant design 控制多选
  2. 前端学习(3212):解决类中的this问题
  3. 前端学习(3037):vue+element今日头条管理-把数据放到本地存储
  4. [css] position跟margin collapse这些特性相互叠加后会怎么样?
  5. 前端学习(1695):前端系列javascript之问题解答
  6. 前端学习(226):定位使用
  7. mybatis学习(9):mybatis连接mysql数据库
  8. html:(40):块级元素和内联块级元素
  9. java学习(83):常用基础类object
  10. java学习(61):适配器