nHibernate Mapping By Code - Introduction
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相关推荐
- NHibernate Mapping Attribute实现复合主键映射
当我在学习使用NHibernate Mapping Attribute的时候,遇到复合主键映射问题,查询了很多资料,也向朋友请教过,由于相关资料不多,中间走了些弯路,好在最终较好解决了,现记录分享如下 ...
- 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 ...
- NHibernate ConfORM Mapping
前言 昨天写了一篇fluent nhibernate通过约定的代码映射方式,NH在3.0版本以后已经集成了conform的代码映射方式,一直没注意也没使用过,今天试试怎么样. 步骤 1.通过confo ...
- NHibernate剖析:Mapping篇之Mapping-By-Code(1):概览
ModelMapper概述 NHibernate3.2版本号集成Mapping-By-Code(代码映射),其设计思想来源于ConfORM.代码总体构思基于"Loquacious" ...
- [NHibernate]使用AttributeNHibernate.Mapping.Attributes
系列文章 [Nhibernate]体系结构 [NHibernate]ISessionFactory配置 [NHibernate]持久化类(Persistent Classes) [NHibernate ...
- 使用NHibernate 3.2实现Repository(ORuM)(三)NHibernate、Mapping、Mapping-By-Code
NHibernate使用时通常是先定义实体类,再为实体类映射数据库关系,NHibernate映射是使用XML文件形式的. 当我们Confrontation NHibernate时Mapping的过程: ...
- Simple NHibernate Architecture[from]
原文地址:http://www.codeproject.com/aspnet/NHibernateArchitecture.asp Download source - 2,523.7 KB Intro ...
- nhibernate处理多数据库
nhibernate处理多数据库 When using NHibernate in an ASP.NET application it is important to manage sessions ...
- [Hibernate]在VS2010中应用NHibernate 3.2与MySQL
在VS2010中应用NHibernate 3.2与MySQL 罗朝辉 (http://kesalin.cnblogs.com/) 本文遵循"署名-非商业用途-保持一致"创作公用协议 ...
最新文章
- Android自定义组件
- 笔记本的处理器型号怎么区别好坏
- scrapy 安装_安装scrapy时出错
- vim 粘贴代码格式
- [NOI2017]泳池
- 通化红灯_我们如何构建廉价,可扩展的架构来对世界进行卡通化!
- python 将图片与字符串相互转换
- 归并排序python实现
- 关于spring注入
- 24.root, alias
- python数据读写 panda(to_csv和read_csv)【读取dat文件】【写入dat文件】【非csv文件并且有多列数据时】
- easyrecovery软件如何恢复丢失数据-注册码-序列号-密钥最新绿色下载版
- android蓝牙 助手源码,蓝牙串口助手(Android Studio源码)
- ping 端口是否开放(Mac、Linux、Windows系统)
- 【190112】VC++ 电话簿通讯录程序源代码
- 通达信标记符号_通达信各种符号
- linux est 时间,Linux 时间标准简介
- 点餐微信小程序【源码好又多】
- 翻阅笔记所得杂记若干
- c语言练习:输入一个字符,如果是数字字符就输出,如果不是则输出“不是数字字符”。
热门文章
- React开发(261):react项目理解 ant design 控制多选
- 前端学习(3212):解决类中的this问题
- 前端学习(3037):vue+element今日头条管理-把数据放到本地存储
- [css] position跟margin collapse这些特性相互叠加后会怎么样?
- 前端学习(1695):前端系列javascript之问题解答
- 前端学习(226):定位使用
- mybatis学习(9):mybatis连接mysql数据库
- html:(40):块级元素和内联块级元素
- java学习(83):常用基础类object
- java学习(61):适配器