[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

时间: 2024-10-13 03:06:42

[NHibernate]代码生成器的使用的相关文章

论动软代码生成器的好与坏

曾几何时,动软代码生成器是一种非常方便的工具,很多从事C#语言的开发人员都用过这个工具,当然也包括楼主本人. 以往的开发模式都是围绕数据库为中心展开的,先设计好数据库,然后再编写代码.动软代码生成器就是在这样的背景下诞生的. 你只要设计好数据库模式,然后用动软代码生成器一键生成数据访问层代码,非常方便.(虽然动软有业务层,但我认为那是鸡肋,只不过是数据访问层的一层简单包装,没有实际意义) 这对不想手动编写枯燥乏味的数据库操作的开发人员来说,非常有吸引力. 下面楼主凭借自己的经验,从好与坏两个方面

NHibernate框架与BLL+DAL+Model+Controller+UI 多层架构十分相似--『Spring.NET+NHibernate+泛型』概述、知识准备及介绍(一)

原文://http://blog.csdn.net/wb09100310/article/details/47271555 1. 概述 搭建了Spring.NET+NHibernate的一个数据查询系统.之前没用过这两个框架,也算是先学现买,在做完设计之 后花了一周搭建成功了.其中,还加上了我的一些改进思想,把DAO和BLL之中相似且常用的增删改查通过泛型T抽象到了DAO和BLL的父类中,其DAO 和BLL子类只需继承父类就拥有了这些方法.和之前的一个数据库表(视图)对应一个实体,一个实体对应一

私人定制-代码生成器2

大家好最近一直比较忙没有及时更新软件,首先说声抱歉.这次为大家带来的是v2.3.0版本,这次主要更新有如下几点: 一.V2.3.0新增功能:1.支持生成数据库常用脚本 Update.InsertAndUpdate . 2.支持NHibernate映射文件Hbm文件生成 .3.支持Mssql2000数据库 .4.新增了字段类型与目标类型映射 .5.优化了进度条显示,主要是程序执行和界面显示不同步问题 .6.对代码进行了适当的重构,减少了冗余代码.提高了代码复用率.代码每页不超过100行.7.优化软

NHibernate错误:Could not compile the mapping document的解决

用动软代码生成器的NHibernate生成模板,生成一个“XML映射模板”,老是提示Could not compile the mapping document的问题. 各种的找,就是没找到问题. 后来调试的时候,把所有的中断翻出来 发现bool这个类型不认识,再看CodeSmith的模板,里面对MS SQLServer的bit类型是转化为Boolean, 果断地把对应的hbm.xml里的bool类型换成Boolean, 终于搞定.

[NHibernate]存储过程的使用(一)

目录 写在前面 文档与系列文章 Nhibernate中使用存储过程 一个例子 总结 写在前面 上篇文章一个小插曲,分析了延迟加载是如何解决N+1 select查询问题的.这篇开始介绍在nhibernate中如何使用存储过程,同时也介绍如何使用代码生成器,提高开发效率. 文档与系列文章 [Nhibernate]体系结构 [NHibernate]ISessionFactory配置 [NHibernate]持久化类(Persistent Classes) [NHibernate]O/R Mapping

NHibernate之旅(17):探索NHibernate中使用存储过程(下)

本节内容 引入 实例分析 拾遗 结语 引入 上两篇,介绍使用MyGeneration提供的模板创建存储过程和删除对象.创建对象.更新对象整个详细过程,这篇介绍如何利用<sql-query>做更多的事,在程序开发中,我们不仅仅只利用存储过程增删查改对象,我们还可以想执行任意的存储过程,这不局限于某个对象,某个CURD操作,怎么做呢?注意:本篇并非官方权威的资料,所以敬请参考.如果你还没有学习NHibernate,请快速链接到NHibernate之旅系列文章导航. 实例分析 下面我用几个例子来分析

NHibernate使用简单示例

NHibernate使用小示例 1.新建Model类库项目. 使用代码生成器生成Model类. 此处以简单的UserInfo表作为示例. 注意字段前必须以 virtual 修饰. namespace Model { public partial class UserInfo { public virtual System.Int32 Id { get; set; } public virtual System.String Name { get; set; } } } 2.编写映射实体类与数据库

Entity FrameWork 与 NHibernate

  1 Nhibernate 展示了NHibernate在数据库和用程序之间提供了一个持久层. 应用程序自己提供ADO.NET连接,并且自行管理事务.NHibernate体系结构如图1-51所示.它体现了NHibernate如何使用数据库和配置文件数据来为应用程序提NHibernate 供持久化服务(和持久化的对象). SessionFactory(NHibernate.IsessionFactory):它是Session的工厂,是ConnectionProvider的客户.可以持有一个可选的(

[NHibernate]存储过程的使用(二)

目录 写在前面 文档与系列文章 创建对象 更新对象 总结 写在前面 上篇文章介绍了如何使用MyGeneration代码生成器生成存储过程,以及nhibernate中通过存储过程删除数据的内容,这篇文章将介绍如何创建对象,更新对象. 文档与系列文章 [Nhibernate]体系结构 [NHibernate]ISessionFactory配置 [NHibernate]持久化类(Persistent Classes) [NHibernate]O/R Mapping基础 [NHibernate]集合类(