如何在PowerDesigner中从概念模型生成/更新物理模型时忽略扩展属性
如何在PowerDesigner中从概念模型生成/更新物理模型时忽略扩展属性
我太懂你这个困扰了——物理模型里专门为第三方导出维护的扩展属性,每次从概念模型更新时都要被提示覆盖,本来这些属性就和概念模型没关系,还要手动去选保留,真的很麻烦。下面给你几个实用的解决办法,亲测在PowerDesigner 16.6里有效:
方法一:修改扩展属性的比较规则(一劳永逸)
这是最彻底的办法,直接让PowerDesigner在合并时自动忽略这些扩展属性:
- 打开你的物理模型,点击顶部菜单栏的
Tools->Extended Model Definitions - 在弹出的窗口里,找到你那些只存在于物理模型的扩展属性(比如你说的用于第三方导出的那些)
- 选中每个目标扩展属性,在右侧属性面板里找到
Comparison选项(一般在Advanced标签页下),把它改成Ignore - 保存设置后,下次再更新物理模型时,PowerDesigner就不会再惦记这些属性了,完全跳过它们的比较和覆盖提示
方法二:在合并窗口自定义规则(临时/按需设置)
如果不想修改全局属性,也可以每次合并时临时设置规则:
- 当弹出「Merge Option」窗口时,点击窗口里的
Customize按钮 - 在自定义合并规则界面,先选择对应的对象类型(比如
Table或Column),然后找到你的扩展属性 - 把该属性的合并规则设置为
Keep Target(意思是保留物理模型里的现有值,不被概念模型的空值覆盖) - 你还可以把这个规则保存成预设,下次更新时直接调用,不用重复设置
方法三:脚本批量设置(适合大量扩展属性)
如果你有一堆扩展属性要设置,手动改太费时间,可以用PowerDesigner的脚本批量处理:
打开Tools -> Execute Commands -> Edit/Run Script,粘贴下面的VBScript运行(记得把脚本里的属性名称前缀改成你实际用的):
' 遍历物理模型中的所有表 For Each tbl In ActiveModel.Tables ' 处理表的扩展属性 For Each extAttr In tbl.ExtendedAttributes ' 筛选目标扩展属性,这里假设前缀是"ThirdParty_" If Left(extAttr.Name, 11) = "ThirdParty_" Then extAttr.Comparison = igIgnore ' 设置为忽略比较 End If Next ' 处理表中列的扩展属性 For Each col In tbl.Columns For Each extAttr In col.ExtendedAttributes If Left(extAttr.Name, 11) = "ThirdParty_" Then extAttr.Comparison = igIgnore End If Next Next Next MsgBox "批量设置完成!"
这样处理后,你再从概念模型更新物理模型时,那些专属物理模型的扩展属性就会被稳稳保留,再也不用被烦人的覆盖提示打断工作啦~
备注:内容来源于stack exchange,提问作者swerr
相关产品推荐
相关产品推荐

