很多代码生成器都选择了从表结构来生成领域模型,这样的方案有一个前提,就是领域模型和数据库表结构是同构的,也就是说领域模型中的类和数据库中的记录结构十分吻合,这样数据库表结构可以简单的直接映射到领域模型。

但是在业务逻辑比较复杂的情况下,对象方案和关系方案往往是不相配的,通常在两者之间有一个数据映射器来隔离两者,这时两者是相互不可见的,相互独立演变的。这样,基于表结构的代码生成领域模型的类就行不通了,而应该使用对象模型。而这样的代码生成几乎不需要自己在写代码生成器,可以使用PowerDesigner9。

PowerDesigner9自己就已经具有代码生成功能,你只要建立一个Object_Oriented Model(语言选择C#,类图),完成类设计后,使用Language菜单下的“Generate C# Code”。生成完后看看代码文件,所有的属性都没有get和set方法,要想生成这两个方法,就要自己动手修改PowerDesigner的代码生成模板,可以选择Language菜单下的“Edit Current Object Language”,在弹出的窗口中修改代码模板: 

可以在value部分看到代码生成的脚本,如果你使用codesmith等代码生成工具写过模板,这段脚本就很容易理解了,只要自己修改下就可以了,例如,我把其中的第三行:[%visibility% ][%flags% ]%dataType% _%Code%[ = %InitialValue%];

这句改成:

private %dataType% _%Code%[ = %InitialValue%];

public %dataType% %Code%

{

get

{

return _%Code%;

}

set

{

value = _%Code%;

}

}

另外两个if分支中的也作相应的修改,再生成一次看看,get和set函数都有了。

C#的代码模板是PowerDesigner的安装目录下的Resource Files\Object Languages目录下的csharp.xol文件,打开后可以看到实际上是一个xml文件,这样你就可以自己定义代码生成的模板了。

来源:http://tech.it168.com/m/2007-08-29/200708291905519.shtml

相关文章:

最新文章

  1. 更改SharePoint 2007/2010/2013 Web 应用程序端口号
  2. Python + OpenCV2 系列:3 - python 字符串,类,编码规范
  3. Xen、Openvz、KVM有什么区别?
  4. APACHE支持.htaccess以及 No input file specified解决方案
  5. MyBatis学习笔记之resultMap
  6. Mongodb集群部署ReplicaSet+Sharding -摘自网络
  7. linux0.11下的中断机制分析
  8. Maven 环境配置
  9. 雷林鹏分享:jQuery EasyUI 数据网格 - 设置冻结列
  10. css格式比较及选择器类型总结
  11. (5)HomeAssistant 增加设备
  12. python--类中的对象方法、类方法、静态方法的区别
  13. [JAVA]JAVA章4 Thread Dump如何分析
  14. 20155309南皓芯 网络对抗《网络攻防》 Exp1 PC平台逆向破解(5)M
  15. SFTP编辑linux文件 ——mac sublime text2 sftp
  16. <<attention is all you need>>速读笔记
  17. 微信小程序开发--宽为百分百,页面仍可左右滑动
  18. hihocoder 1320 - 压缩字符串 - [hiho一下160周]
  19. HTML+纯JS制作音乐播放器
  20. Count 1 in Binary

热门文章

  1. 怎么用SecureCRT这个工具把linux服务器的压缩文件下载到本地的一个路径。
  2. Python实现求矩阵路径最小和,使用动态规划
  3. linu触摸屏幕
  4. 汕头市队赛 SRM 09 B 撕书
  5. SpringBoot设置事务管理
  6. Inline Hook
  7. wxpython demo
  8. usb驱动---What is the difference between /dev/ttyUSB and /dev/ttyACM【转】
  9. AC日记——[WC2013]糖果公园 cogs 1817
  10. Linux下多进程服务端客户端模型二(粘包问题与一种解决方法)