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

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

相关文章:

使用PowerDesigner进行代码生成的更多相关文章

  1. PowerDesigner(八)-面向对象模型(用例图,序列图,类图,生成Java源代码及Java源代码生成类图)(转)

    面向对象模型 面向对象模型是利用UML(统一建模语言)的图形来描述系统结构的模型,它从不同角度实现系统的工作状态.这些图形有助于用户,管理人员,系统分析人员,开发人员,测试人员和其他人员之间进行信息交 ...

  2. ORM框架-VB/C#.Net实体代码生成工具(EntitysCodeGenerate)【ECG】4.5

    摘要:VB/C#.Net实体代码生成工具(EntitysCodeGenerate)[ECG]是一款专门为.Net数据库程序开发量身定做的(ORM框架)代码生成工具,所生成的程序代码基于OO.ADO.N ...

  3. PowerDesigner Vs Enterprise Architect

    注: 以下文中PD表示PowerDesigner,EA表示Enterprise Architect 最近一直在做设计方面的事情,之前一直在用PD.有个阿里过来的同事说阿里都是用EA,我就抽空小研究了一 ...

  4. PowerDesigner 15 概述

    PowerDesigner 15 概述 数据结构数据库powerbuildersybasemicrosoftuml   目录(?)[+]   一. PowerDesigner 介绍 PowerDesi ...

  5. mysql及powerdesigner的初次使用

    原文:mysql及powerdesigner的初次使用 MYSQL的下载与安装: 下载与安装指导教程: http://jingyan.baidu.com/article/597035521d5de28 ...

  6. PowerDesigner 的mysql PDM 的COMMENT注释

    PowerDesigner 的mysql PDM 的COMMENT注释 2012-11-01 15:38 4447人阅读 评论(0) 举报 分类: 数据库相关(7) PowerDesigner 的my ...

  7. PowerDesigner制作UMI图

    首先我们要下载一个PowerDesigner,自己上百度下载哈!嘻嘻!!! 我这个是汉化版的 然后点这个,再到空白的地方点一下就创建好了. 然后单击右边箭头然后双击 不管是制作的图还是代码生成的图都可 ...

  8. PowerDesigner 学习:十大模型及五大分类

    个人认为PowerDesigner 最大的特点和优势就是1)提供了一整套的解决方案,面向了不同的人员提供不同的模型工具,比如有针对企业架构师的模型,有针对需求分析师的模型,有针对系统分析师和软件架构师 ...

  9. PowerDesigner 15学习笔记:十大模型及五大分类

    个人认为PowerDesigner 最大的特点和优势就是1)提供了一整套的解决方案,面向了不同的人员提供不同的模型工具,比如有针对企业架构师的模型,有针对需求分析师的模型,有针对系统分析师和软件架构师 ...

随机推荐

  1. php的post

    代码的顺序不能乱,否则会提交错误 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HE ...

  2. classes could not be found: - android.support.v7.internal.app.WindowDecorActionBar问题的解决方法

    转载至----http://my.oschina.net/u/2425146/blog/546649?fromerr=aDYrFDVx.仅作个人收藏使用,有转载的朋友请连续原作者,谢谢 刚刚进入stu ...

  3. 飞扬的小鸟(NOIP2014)(丧病DP题)

    原题传送门 刚开始我还以为这道题目非常的简单.. 然后随便打了一个DP,直接WA,被zxyer狠狠地D了一顿. 然后发现有好多细节.. 首先假如某横坐标没有管子,那么l[x]=0;h[x]=m+1; ...

  4. eclipse 调试(debug) burpsuite 插件(Extender)

    demo: https://github.com/src-kun/transparent-cap/tree/master/burpsuite 1.打开demo项目: 2.右键项目点击Configure ...

  5. 通过OpenGL ES在iOS平台实践增强现实

    http://www.cnblogs.com/elvisyzhao/p/3398250.html 本文采用OpenGL ES 1固定渲染管线实现,目标为在设备拍摄到的现实世界中,绘制世界坐标轴,并根据 ...

  6. Centos 6.3防火墙端口放行

    vi /etc/sysconfig/iptables #防火墙增加 -A INPUT -p tcp -m state --state NEW -m tcp --dport -j ACCEPT serv ...

  7. python update数据

    #!/usr/bin/env python # -*- coding:utf-8 -*- # @Time : 2017/11/23 23:57 # @Author : lijunjiang # @Fi ...

  8. react className的2种变量写法

    ES6新增的不少语法都是极好用的, 在拼接变量与字符串时,模版字符串``就是典型的用法 以下是2种写法 <div className={"bubble-box" +' '+` ...

  9. 将C#程序做成服务后服务自动停止的问题

    查了好几天,没法调试实在是很难找错误,今天想了半天到事件查看器,提示如下: 说明: 由于未经处理的异常,进程终止. 异常信息: System.NullReferenceException 想了半天,应 ...

  10. 洛谷 P1739 表达式括号匹配【STL/stack/模拟】

    题目描述 假设一个表达式有英文字母(小写).运算符(+,-,*,/)和左右小(圆)括号构成,以"@"作为表达式的结束符.请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返 ...