登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
NHibernate之旅(18):初探代码生成工具使用 ...
NHibernate之旅(18):初探代码生成工具使用
[ 复制链接 ]
胆饬
2025-5-30 01:25:56
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
本节内容
引入
代码生成工具
结语
引入
我们花了大量的篇幅介绍了相关NHibernate的知识,一直都是带着大家手动编写代码,首先创建数据库架构,然后编写持久化类和映射文件,最后编写数据操作方法,测试方法。这是典型的数据库驱动开发(DbDD,Database-Driven Developent)技术,但是自己不是这样做的,我先编写持久化类和映射文件,然后偷偷的使用SchemaExport工具把数据库生成了,按上面的步骤写文章的,关于SchemaExport工具就是下一篇的事情了,这篇说说利用数据库架构用代码生成工具生成持久化类和映射文件。
所谓数据库驱动模型是指对象模型随着数据库架构改变而改变,那么我们为什么还使用这个技术呢?有两种原因:你的数据库是遗留下来的系统使用的,数据库中已经存在大量有用数据,不可以更换数据库就将就着使用了;你的数据库架构按照需求分析基本上确定了,不要做任何改动,在系统设计初期已经把数据库建好了。
让我们用一张图片来大致展示典型的数据库驱动开发模型。以数据库架构为核心。
使用数据库驱动模型流程就是当数据库架构修改时候,映射文件和持久化类通过代码生成工具重新生成一下。我们只要修改应用程序即可。
这里延伸一个问题:数据库是否需要在项目开始前设计?
如果我们进行数据库设计,那么就产生一系列问题:我们在面向对象领域设计持久化对象必须考虑事先设计好的数据库表结构以及表关系,在编写映射文件时候也要考虑,在面向对象中的继承、多态等特性根本没法使用。所以我不推荐在项目开始设计数据库,大家认为如何?所以使用代码生成工具是下下策。
代码生成工具
顾名思义,代码生成工具大家都使用过,有商业的CodeSmith开源的MyGeneration等,这篇我们介绍如何使用开源MyGeneration代码生成工具根据数据库架构生成映射文件和持久化类。如果你机器上还没有安装MyGeneration,请到这里下载,然后安装MyGeneration,安装之后,打开MyGeneration,配置“默认设置”、打开“模板浏览器”窗口,这些步骤如果不清楚的话请转向NHibernate之旅(15):探索NHibernate中使用存储过程(上)文章中吧,具体介绍了上面的步骤和方法。
再提示一下:如果你的操作系统是Windows Vista,请右击“以管理员身份运行”MyGeneration。
这篇我们接着做:
Step1:点击“模板浏览器”窗口的第三个“在线更新”按钮:来在线下载模板。
Step2:出现“在线模板库”窗口,在“在线模板库”中提供了各种各样的模板,找到NHibernate节点:
Step3:展开NHibernate节点,找到“NHibernate Sharp 1.4 [sharpm64]”模板,右键点击“保存”。这个模板就自动保存到本地模板文件夹中。
Step4:点击“模板浏览器”窗口的第一个“刷新”按钮,这个模板就在“模板浏览器”可以看见了,展开NHibernate节点,右击“执行”NHibernate Sharp1.4模板。
Step5:这就是NHibernate OHM界面窗口,右面显示表、视图、操作标签,在表标签界面上,右边有不映射、映射等按钮,在表中不同的颜色代表字段不同的属性。
Step6:点击“CustomerId”列,右边显示了这个表,并在状态栏显示了“CustomerId”列的属性:int类型、主键。另外可以自己摸索一下:
Step7:点击“视图”标签,设置CustomerId为主键。
Step8:点击“操作”标签,我们具体设置程序集名称和命名空间名称,这里我设置GenDomainModel,设置生成工程,由于这个模板不支持VS2008,所以选择生成IDE版本为VS2005。设置输出路径。点击OK按钮。
Step9:这时打开文件夹,代码生成工具根据数据库架构生成了相应的持久化类和映射文件。
Step10:用VS2008打开,VS2008自动升级GenDomainModel.csproj解决方案文件,解决方案项目文件如下:
Step11:这时就可以使用了,可以把这个类库利用添加现有项目功能添加到我们的项目中作为实体持久层,我们利用这个实体持久层编写数据访问层方法实现对数据库的CRUD操作,当然在使用前要搞清楚这个项目的类库架构,另外由于模板本身还不是很完善(例如这个模板不支持版本控制映射、不支持多对多直接映射),所以我们还需要按照实际情况去修改持久化类和映射,显然无形中增加了一些负担。
注意不要忘记在hibernate.cfg.xml中修改为。
结语
本身对于代码生成工具的使用很简单的,就是下一步下一步的按,这节就是多图展示一下怎么快速使用代码生成工具,在MyGeneration中还有很多模板用于生成NHibernate的持久化类和映射文件,每个模板都有自己的缺点和优点,生成不同的结构,这在于大家去发现了~~但是我发现还是自己手写代码才是霸道!思路清晰,代码简单!
至今不明白这个问题:代码生成工具到底给谁用的?新手?老鸟?唯一的好处就是快?不用写代码。但是你知道它生成的架构吗?它的思路吗?
本系列链接:NHibernate之旅系列文章导航
NHibernate Q&A
欢迎加入NHibernate中文社区,一起讨论NHibernate知识!
请到NHibernate中文社区下载本系列相关源码。
下次继续分享NHibernate!
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
NHibernate
之旅
初探
代码
生成
相关帖子
poloapi 深度测评:99.8% 可用性 + 零代码迁移,AI 开发成本砍半
【译】初探 Visual Studio 2026 全新的用户体验
生成式引擎优化(GEO优化)全维度技术指南
Flink源码阅读:如何生成StreamGraph
你的代码正在腐烂:为什么我们都不敢碰那座“屎山”?
强壳保护NET代码!Dnguard 4.9.4最新企业旗舰版下载地址
吴恩达深度学习课程四:计算机视觉 第二周:经典网络结构 课后习题和代码实践
阿里Z-Image图像生成模型容器部署
Flink源码阅读:如何生成JobGraph
Flink源码阅读:如何生成ExecutionGraph
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
安全
poloapi 深度测评:99.8% 可用性 + 零代码迁移,AI 开发成本砍半
0
346
遑盲
2025-12-15
业界
【译】初探 Visual Studio 2026 全新的用户体验
1
178
喙审
2025-12-17
业界
生成式引擎优化(GEO优化)全维度技术指南
0
997
史华乐
2025-12-17
业界
Flink源码阅读:如何生成StreamGraph
0
354
梁丘艷蕙
2025-12-18
业界
你的代码正在腐烂:为什么我们都不敢碰那座“屎山”?
1
619
蟠鲤
2025-12-18
业界
强壳保护NET代码!Dnguard 4.9.4最新企业旗舰版下载地址
1
772
庞悦
2025-12-19
业界
吴恩达深度学习课程四:计算机视觉 第二周:经典网络结构 课后习题和代码实践
0
81
句惫
2025-12-19
科技
阿里Z-Image图像生成模型容器部署
0
1010
枢覆引
2025-12-20
业界
Flink源码阅读:如何生成JobGraph
0
731
钨哄魁
2025-12-20
业界
Flink源码阅读:如何生成ExecutionGraph
0
760
唯棉坜
2025-12-21
回复
(3)
背竽
2025-10-22 00:47:20
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
感谢分享,学习下。
荆邦
2025-10-22 02:26:41
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
谢谢分享,辛苦了
锦惺
2025-11-24 23:59:36
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
感谢分享,学习下。
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
安全
签约作者
程序园优秀签约作者
发帖
胆饬
2025-11-24 23:59:36
关注
0
粉丝关注
20
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991124
anyue1937
9994892
kk14977
6845358
4
xiangqian
638210
5
韶又彤
9997
6
宋子
9981
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9949
查看更多
今日好文热榜
434
用 .NET MAUI 10 + VS Copilot 从 0 开发一
865
【节点】[GammaToLinearSpaceExact节点]原
373
[20251218]测试sql语句子光标的执行性能(21
489
HECTF2025
13
《C语言程序设计》琐碎知识点总结笔记
378
NGD-SLAM(三)
45
AI 领域职业发展分享总结(吴恩达新课内容
102
【面试题】数据库事务隔离与传播属性是什么
189
2025年儿童羽绒服十大名牌排名:宝妈选购指
312
2025年儿童羽绒服十大名牌排名:宝妈选购指
760
Flink源码阅读:如何生成ExecutionGraph
420
Github项目CI&CD部署
314
AgentScope深入分析-LLM&MCP
599
《痞子衡嵌入式半月刊》 第 120 期
626
go项目使用go build 与 MakeFile 构建项目
765
监控指标与容量预警——延迟、命中率、慢查
673
2026 年别墅防水服务商 TOP5 推荐:高端住
963
MAUI库推荐二:MPowerKit
962
.NET10 New feature 新增功能介绍-JIT编译
404
报考陪诊师选守嘉陪诊的理由