[NHibernate]代码生成器的使用
目录
写在前面
文档与系列文章
代码生成器的使用
总结
写在前面
前面的文章介绍了nhibernate的相关知识,都是自己手敲的代码,有时候显得特别的麻烦,比如你必须编写持久化类,映射文件等等,举得例子比较简单,字段比较少,如果一个数据表有几十个字段,你手敲的话烦都烦死了,不过为了学习nhibernate的语法,初学的过程还是建议自己动手,这样敲的多了就对每个过程,及映射文件中的节点的含义有个大致印象。前面举的例子,你也会发现这种方式的步骤就是首先创建数据库,然后编写持久化类,映射文件,最后编写操作数据的代码,这种方式是典型的数据库驱动开发(DbDD,Database-Driven Developent)技术。这个步骤能不能反过来?就好比EF中的Code First方式,先编码,然后再生成数据库。当然可以,可以借助SchemaExport工具把数据库生成了。这里还是先说说前面使用过得MyGeneration代码生成器的使用把。
什么是数据库驱动模型?
对象模型随着数据库架构的变化而变化。那为什么还需要这种模型?
一:数据库是遗留的系统使用的,并且数据库中已有大量的数据,不能随便更改。
二:你的数据库架构按照需求分析基本上确定了,不要做任何改动,在系统设计初期已经把数据库建好了。
使用数据库驱动模型流程就是当数据库架构修改时候,映射文件和持久化类通过代码生成工具重新生成一下。我们只要修改应用程序即可。
参考:http://www.cnblogs.com/lyj/archive/2008/11/10/1330542.html
文档与系列文章
[Nhibernate]体系结构
[NHibernate]ISessionFactory配置
[NHibernate]持久化类(Persistent Classes)
[NHibernate]O/R Mapping基础
[NHibernate]集合类(Collections)映射
[NHibernate]关联映射
[NHibernate]Parent/Child
[NHibernate]缓存(NHibernate.Caches)
[NHibernate]NHibernate.Tool.hbm2net
[NHibernate]Nullables
[NHibernate]Nhibernate如何映射sqlserver中image字段
[NHibernate]基本配置与测试
[NHibernate]HQL查询
[NHibernate]条件查询Criteria Query
[NHibernate]增删改操作
[NHibernate]事务
[NHibernate]并发控制
[NHibernate]组件之依赖对象
[NHibernate]一对多关系(级联删除,级联添加)
[NHibernate]一对多关系(关联查询)
[NHibernate]多对多关系(关联查询)
[NHibernate]延迟加载
[NHibernate]立即加载
[NHibernate]视图处理
[NHibernate]N+1 Select查询问题分析
[NHibernate]存储过程的使用(一)
[NHibernate]存储过程的使用(二)
[NHibernate]存储过程的使用(三)
代码生成器的使用
前面文章中已经介绍了一种开源的代码生成器MyGeneration,那么本篇文章我们继续介绍如何使用开源MyGeneration代码生成工具根据数据库架构生成映射文件和持久化类。(假设你已经安装了MyGeneration),由于代码生成器操作步骤类似,这里就引用李永京的文章中图进行说明了,也不考虑版本之间的差异了,知道使用的步骤就可以了。
1、点击“模板浏览器”窗口的第三个“在线更新”按钮:来在线下载模板。
2、出现“在线模板库”窗口,在“在线模板库”中提供了各种各样的模板,找到NHibernate节点:
3、展开NHibernate节点,找到“NHibernate Sharp 1.4 [sharpm64]”模板,右键点击“保存”。这个模板就自动保存到本地模板文件夹中。
4、点击“模板浏览器”窗口的第一个“刷新”按钮,这个模板就在“模板浏览器”可以看见了,展开NHibernate节点,右击“执行”NHibernate Sharp1.4模板。
5、这就是NHibernate OHM界面窗口,右面显示表、视图、操作标签,在表标签界面上,右边有不映射、映射等按钮,在表中不同的颜色代表字段不同的属性。
6、点击“CustomerId”列,右边显示了这个表,并在状态栏显示了“CustomerId”列的属性:int类型、主键。另外可以自己摸索一下:
7、点击“视图”标签,设置CustomerId为主键。
8、点击“操作”标签,我们具体设置程序集名称和命名空间名称,这里我设置GenDomainModel,设置生成工程,由于这个模板不支持VS2008,所以选择生成IDE版本为VS2005。设置输出路径。点击OK按钮。
9、这时打开文件夹,代码生成工具根据数据库架构生成了相应的持久化类和映射文件。
10、用VS2008打开,VS2008自动升级GenDomainModel.csproj解决方案文件,解决方案项目文件如下
11、这时就可以使用了,可以把这个类库利用添加现有项目功能添加到我们的项目中作为实体持久层,我们利用这个实体持久层编写数据访问层方法实现对数据库的CRUD操作,当然在使用前要搞清楚这个项目的类库架构,另外由于模板本身还不是很完善(例如这个模板不支持版本控制映射、不支持多对多直接映射),所以我们还需要按照实际情况去修改持久化类和映射,显然无形中增加了一些负担。
注意不要忘记在hibernate.cfg.xml中修改<mapping assembly="DomainModel"/>为<mapping assembly="GenDomainModel"/>。
总结
关于代码生成器的部分就说到这里,毕竟是一个工具,在项目中我用的是动软的代码生成器,工具是一个辅助的作用,少敲点代码,哪个用的顺手用哪个!
来源:http://www.cnblogs.com/lyj/archive/2008/11/10/1330542.html
转载于:https://www.cnblogs.com/wolf-sun/p/4098873.html
[NHibernate]代码生成器的使用相关推荐
- Nhibernate代码生成器v2.1中文版
Nhibernate代码生成器v2.1中文版(转发) 下载 转载于:https://www.cnblogs.com/hakuci/archive/2008/03/15/1106802.html
- 发布:偶写的NHibernate代码生成器
1.结构 2.功能 1) 可以生成CSharp 和 Xml 文件 2) 支持SQL Server数据库 3) 支持生成注释,根据数据库注释生成CSharp注释 4) 支 ...
- Nhibernate与代码生成器介绍(转载)
原来一直使用代码生成,包括CodeSmith和CodeMatic.最近打算系统学习一下Nhibernate,经过简单的一点探索,发现ORM和代码生成真是个有千秋.育学网3i�Rp\s8v Z5pa)S ...
- 各种好用的代码生成器
1:CodeSmith 一款人气很旺国外的基于模板的dotnet代码生成器 官方网站:http://www.codesmithtools.com 官方论坛:http://forum.codesmi ...
- 各种好用的代码生成器(C#)
1:CodeSmith 一款人气很旺国外的基于模板的dotnet代码生成器 官方网站:http://www.codesmithtools.com 官方论坛:http://forum.codesmith ...
- Nhibernate和 Entity Framework 4优缺点
关于NHibernate和Entity Framework 4.0各自优点和功能,我们知道这二者都是基于.NET的对象/关系映射框架.EF 4相比EF1.0所作出的进步之后,使得NHibernate成 ...
- 软件开发工具介绍之 1.代码生成器
在程序开发过程当中,程序员会经常做着重复性的工作,最常见的是访问数据库,程序员要经常编写增.删.改.分页之类的操作.为了避免这个问题,节省大量机械录入的时间和重复劳动,提高工作效率,而将精力集中于核心 ...
- iBatis for Net 代码生成器(CodeHelper)附下载地址(已经升级为V 1.1)
CodeHelper是一款可以自己定义模板和生成内容的代码生成器,目前只支持MsSql数据库,这款代码生成器的初衷也只是为了生成MyBatis.net框架的配置文件而写的一个轻量级的代码生成器. Co ...
- NHibernate使用之详细图解
本文档适合初级开发者或者是第一次接触NHibernate框架的朋友,其中NHibernate不是最新的版本,但是一个比较经典的版本 NHibernate 2.1.2,其中用红线标注的部分一定要仔细看, ...
最新文章
- 国内高校简称撞车史:南大、西大、东大都在争,唯独北大没人抢
- mysql怎么用_面试官都是这样发问的,连环冲锋炮,看你怎么抵挡(上)
- 计算机二级关于数据结构的题目,计算机二级MS OFFICE 练习题(一五三)
- 读书笔记2013-1--暗时间(刘未鹏)
- FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
- ant-design table 分页(tableProps)
- asm 5 java,java – 使用ASM(5.x)在字节代码中检测运行时的递归方法调用:howto?
- 一开电脑都是广告,请问怎么永久关闭?
- 此刻心情--我为什么不找女朋友
- springboot+vue网络课程教学网站系统java源码介绍
- 如何修改UG标题文字
- 如何将微信聊天记录保存为excel
- Chaotica for Mac(分形艺术图形设计工具)
- Python数据分析师使用低代码Streamlit实现Web数据可视化方法——Plotly可视化基础篇
- 激光投影仪和大屏液晶电视有哪些优缺点?二者应该怎么选?
- 贴海报 (线段树染色-离散化
- 算法笔记.胡凡 第五章 数学问题
- 投稿论文图片分辨率达不到要求的解决方案
- 从0开始学Logisim,计算机硬件系统设计(1)
- 代理自动配置文件PAC的使用方法
热门文章
- mass Framework event模块 v4
- 64位win7安装IIS7时不能浏览asp的问题
- 用 jQuery 的 AJAX 功能发现的一个错误/注意点:HTTP Error 411
- oracle学习总结三(bulk collect用法)
- excel单元格加引号及逗号,转换为sql需要的样式
- kubernetes学习笔记之十三:基于calico的网络策略入门
- 《微信跳一跳》安卓手机刷分软件搭建及攻略
- 深入实践Spring Boot3.1 模型设计
- 转:【CSS/JS学习】如何实现单行/多行文本溢出的省略(...)--老司机绕过坑道的正确姿势...
- ActiveMQ 消息服务(一)