把注释显示出来

选定编辑的表,右键- >Properties- >Columns- >Customize Columns and Filter(或直接用快捷键Ctrl+U)- >Comment(前面打勾)- >OK

把Name的值变成comment(注释) 参照<powerdesigner逆向工程生成PDM时的列注释解决方案的补充>

改进脚本:Powerdesigner界面-Database-Edit Current DBMS

将表的Name换为Comment

将列的Name换为Comment

Name/Code自动填写

大家都清楚在用PowerDesigner的时候,当你输入Name的时候Code是会自动帮你按照Name的内容填上的.
这个功能虽然好用,但是我需要在Name这一项加上一个中文的注释,这个时候怎么办呢?
下面两个例子,相信对你相当有用.
Examples

· Script 1:
.set_value(_First, true, new)
.foreach_part(%Name%, "'#'")
.if (%_First%)
.delete(%CurrentPart%)
.set_value(_First, false, update)
.else
%CurrentPart%
.endif
.next
这个例子是把Name内容的#号后边的内容当作Code.
如:在Name列输入   用户名#user_name  则在Code列自动会变成   user_name
//////////////////////据说上面是错的

.set_value(_First, true, new)
.foreach_part(%Name%, "'#'")
.if (%_First%)
.delete(%CurrentPart%)
.enddelete
.set_value(_First, false, update)
.else
%CurrentPart%
.endif
.next

////////////////
· Script 2:
.set_value(_First, true, new)
.foreach_part(%Name%, "'#'")
.if (%_First%)
%CurrentPart%
.set_value(_First, false, update)
.endif
.next
这个例子是把Name内容的#号前边的内容当作Code.
如:在Name列输入    user_name#用户名  则在Code列自动会变成   user_name

具体操作方法是:
1、打开powerDesigner菜单的Tools->Model Options....->Naming Convention
2、选中Name,并勾选Enable name/code conversions.
3、选择Name To Code,把上面任意一个例子的代码(红色部分)贴到conversion script内容框中即可。

注:用这个script的时候,必须先设置,才会转换的。
如果你已经设计好了,再设置是不会对之前的东西改变的。

另外在使用这个功能时候最好把name/code自动复制功能打开。Tool——Genneral——Options Dialog——Name to Code mirroring.默认就是打开的。

当生成的PDM,用pdmreader来读取,增加查询链接后,很强悍


Power Designer导出实体类和NHibernate xml文件

今天研究了一下通过PowerDesigner生成实体类和NHibernate所需要的xml文件,方法是通过Power Designer的向对象模型 (OOM) 导出并配置相关模板,具体操作步骤如下:

第一步:创建OOM

在PowerDesigner中创建面向对象模型 (OOM)。

我首先创建物理数据模型 (PDM),然后在 Tools → Generate Object-Oriented Model 做了转换。

第二步:配置导出实体模板文件

菜单位置:Language → Edit Current Object Language

General:C# 2::Profile\Attribute\Templates\definition

我对模板进行了简单修改,添加了一行空格和 { get; set; }。又对文件头和字段描述的格式做了修改。

.if (%isGenerated%) and (%isValidAttribute%)

[%comment%\n]\
[%oidDocTag%\n]\
[%customAttributes%\n]\
   .if (%Multiple% == false) and (%isIndexer% == false)
[%visibility% ][%flags% ]%dataType%
.convert_name(%fieldCode%,,"_",FirstUpperChar) //首字母变大写
[ = %InitialValue%] { get; set; }
   .else
[%visibility% ][%flags% ]%dataType%[%arraySize%]
.convert_name(%fieldCode%,,"_",FirstUpperChar) //首字母变大写
[ = %InitialValue%] { get; set; }
   .endif
.endif

DefaultHeader

位置在:C# 2::Profile\Classifier\Templates\DefaultHeader

写自己的代码:

按 Ctrl+C 复制代码

// -------------------------------------------------------------------------------------------------------------------- // <copyright file="%sourceFilename%" company=""> // XXXX系统 // </copyright> // <summary> // %Comment% // </summary> // --------------------------------------------------------------------------------------------------------------------

按 Ctrl+C 复制代码

[%comment%\n]\

位置在:C# 2::Profile\Shared\Templates\comment

写自己的代码:

/// <summary>
/// %CurrentLine%
/// </summary>

提示:在做类时只有把Comment字段填上,导出是才会有字段描述。

对命名空间进行配置,我直接写到了 source 里面感觉不是太合适。

C# 2::Profile\Classifier\Templates\source

现在就可以将实体导出了。

菜单位置:Language → Generate C# 2 Code

第二步:配置导出NHibernatedxml模板文件

这个是通过在网上查资料学来的,

感谢:Powerdesigner生成NHebernate的MAP文件

只是他没有附图,让人找不到位置,我也研究了一个下午才找到的,以下参数命名仍采用他的。

1.还是打开 Object Language Properties

菜单位置:Language → Edit Current Object Language

在 C# 2::Profile\Classifier\Generated Files ,创建一个 hbm.xml 文件。

Name: hbm.xml

FileName:%topContainerCode%.hbm.xml

Comment:

.if (%isGenerated%)

.set_object(_usingContext,,new)

[\ %NHebernateHead%\n]\

%NHebernateBody% \n

%NHebernateFoot%

.endif  

%NHebernateBody%

2.设置%NHebernateBody%模板的内容

在 C# 2::Profile\Classifier\Templates ,新建一个模板 NHebernateBody

<?xml version="1.0" encoding="utf-8" ?>

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="%Parent.path%" namespace="%Parent.path%">
<class name="%sourceFilename%" table="%sourceFilename%" lazy="true" >
<id name="ID" column="ID" type="Guid" >
<generator class="assigned" />
</id> \n
.foreach_item(Attributes)
.if(%dataType% == "string")
<property name="%Code%" type="String">
<column name="%Code%" />
</property> \n
.endif
.if(%dataType% == "int")
<property name="%Code%" type="Int32">
<column name="%Code%" />
</property> \n
.endif
.next
</class>
</hibernate-mapping>

具体里面的配置我还没写好,需要再查帮助。

3.配置输出NHibernate的xml文件

在 C# 2::Profile\BasePackage\Templates\Visual Studio ,将模板修改为:

.// Declare classifiers of the package
.foreach_item(Classifiers,,,%IsShortcut%==false)
.if (%IsSelected%) and (%isInner% == false)
<File
RelPath = "%sourceFilePath%"
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "%sourceFilePath%\\%topContainerCode%.hbm.xml"
BuildAction = "EmbeddedResource"
/>
.endif(\n)
.next
.// Declare classifiers of the subpackages
.foreach_item(Packages,,,%IsShortcut%==false)
.if (%isAssembly% == false)
%ProjectSourceFiles%
.endif
.next

NHibernate的xml配置完成。最后,一起导出实体和NHibernate的.xml文件

菜单位置:Language → Generate C# 2 Code

生成的两个文件:Customers.cs 和 Customers.hbm.xml

?

// --------------------------------------------------------------------------------------------------------------------

// <copyright file="Customers.cs" company="">

//   XXXX系统

// </copyright>

// <summary>

//   账户信息

// </summary>

// --------------------------------------------------------------------------------------------------------------------

namespace XXXX.Domain.Model

{

using System;

/// <summary>

/// 账户信息

/// </summary>

public class Customers

{

/// <summary>

/// 账户ID

/// </summary>

public string customerId { get; set; } dd

/// <summary>

/// 账户名称

/// </summary>

public string customerName { get; set; }

/// <summary>

/// 性别

/// </summary>

public bool gender { get; set; }

/// <summary>

/// 地址

/// </summary>

public string address { get; set; }

/// <summary>

/// 电话号码

/// </summary>

public string phoneNumber { get; set; }

}

}

<?xml version="1.0" encoding="utf-8" ?>

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="" namespace="">
<class name="Customers.cs" table="Customers.cs" lazy="true" >
<id name="ID" column="ID" type="Guid" >
<generator class="assigned" />
</id>
<property name="CustomerId" type="String">
<column name="CustomerId" />
</property>
<property name="CustomerName" type="String">
<column name="CustomerName" />
</property>
<property name="Address" type="String">
<column name="Address" />
</property>
<property name="PhoneNumber" type="String">
<column name="PhoneNumber" />
</property>
</class>
</hibernate-mapping>

今天的学习只是找到了实现方法,想要把模板做好,还要再看看帮助。

不怎么会写博客,望前辈批评指正。

PowerDesigner PDM生成OOM问题?

从PDM转到OOM的时候

Name 是中文

Code 是英文

可是只要一转就出现在 Name=Code都成中文了。

现在从网上找了一个解决办法,挺好用的。

菜单栏Tools --> 选择 Generate Object-Oriented Model 的时候弹出下图窗体

在OOM Generation Options 界面中的

选择detail标签中,将Convert name into code,前面打钩去掉 保存就可能了。

如图所示:

PowerDesigner中NAME和COMMENT的互相转换,需要执行语句

使用说明: 在【Tools】-【Execute Commands】-【Edit/Run Script】 下。输入下面你要选择的语句即可,也可以保存起来,以便下次使用,后缀为.vbs。

需要注意的问题是:运行语句时必须在Module模式下,如果是导出报表时执行会出现错误提示。

1.Name转到Comment注释字段。一般情况下只填写NAME,COMMENT可以运行语句自动生成。

将该语句保存为name2comment.vbs

'把pd中那么name想自动添加到comment里面

'如果comment为空,则填入name;如果不为空,则保留不变,这样可以避免已有的注释丢失.

Option   Explicit

ValidationMode   =   True

InteractiveMode   =   im_Batch

Dim   mdl   '   the   current   model

'   get   the   current   active   model

Set   mdl   =   ActiveModel

If   (mdl   Is   Nothing)   Then

MsgBox   "There   is   no   current   Model "

ElseIf   Not   mdl.IsKindOf(PdPDM.cls_Model)   Then

MsgBox   "The   current   model   is   not   an   Physical   Data   model. "

Else

ProcessFolder   mdl

End   If

'   This   routine   copy   name   into   comment   for   each   table,   each   column   and   each   view

'   of   the   current   folder

Private   sub   ProcessFolder(folder)   

Dim   Tab   'running     table   

for   each   Tab   in   folder.tables   

if   not   tab.isShortcut then

if  trim(tab.comment)="" then'如果有表的注释,则不改变它.如果没有表注释.则把name添加到注释里面.

tab.comment   =   tab.name

end if 

Dim   col   '   running   column   

for   each   col   in   tab.columns  

if trim(col.comment)="" then '如果col的comment为空,则填入name,如果已有注释,则不添加;这样可以避免已有注释丢失.

col.comment=   col.name  

end if

next   

end   if   

next   

Dim   view   'running   view   

for   each   view   in   folder.Views   

if   not   view.isShortcut and trim(view.comment)=""  then   

view.comment   =   view.name   

end   if   

next   

'   go   into   the   sub-packages   

Dim   f   '   running   folder   

For   Each   f   In   folder.Packages   

if   not   f.IsShortcut   then   

ProcessFolder   f   

end   if   

Next   

end   sub

2.将Comment内容保存到NAME中,comment2name.vbs 实习互换。语句为:

Option   Explicit   
ValidationMode   =   True   
InteractiveMode   =   im_Batch   
Dim   mdl   '   the   current   model   
'   get   the   current   active   model   
Set   mdl   =   ActiveModel   
If   (mdl   Is   Nothing)   Then   
      MsgBox   "There   is   no   current   Model "   
ElseIf   Not   mdl.IsKindOf(PdPDM.cls_Model)   Then   
      MsgBox   "The   current   model   is   not   an   Physical   Data   model. "   
Else   
      ProcessFolder   mdl   
End   If   
Private   sub   ProcessFolder(folder)   
On Error Resume Next  
      Dim   Tab   'running     table   
      for   each   Tab   in   folder.tables   
            if   not   tab.isShortcut   then   
                  tab.name   =   tab.comment  
                  Dim   col   '   running   column   
                  for   each   col   in   tab.columns   
                  if col.comment="" then  
                  else 
                        col.name=   col.comment   
                  end if 
                  next   
            end   if   
      next   
      Dim   view   'running   view   
      for   each   view   in   folder.Views   
            if   not   view.isShortcut   then   
                  view.name   =   view.comment   
            end   if   
      next   
      '   go   into   the   sub-packages   
      Dim   f   '   running   folder   
      For   Each   f   In   folder.Packages   
            if   not   f.IsShortcut   then   
                  ProcessFolder   f   
            end   if   
      Next   
end   sub

PowerDesigner增强的更多相关文章

  1. PowerDesigner下载安装破解

    power designer是Sybase公司为开发人员推出的一款常用的数据库建模工具集,它能对管理信息系统进行分析设计,几乎能完成数据库模型设计的全过程,利用Power Designer不仅可以制作 ...

  2. 将表里的数据批量生成INSERT语句的存储过程 增强版

    将表里的数据批量生成INSERT语句的存储过程 增强版 有时候,我们需要将某个表里的数据全部或者根据查询条件导出来,迁移到另一个相同结构的库中 目前SQL Server里面是没有相关的工具根据查询条件 ...

  3. ES5对Array增强的9个API

    为了更方便的对Array进行操作,ES5规范在Array的原型上新增了9个方法,分别是forEach.filter.map.reduce.reduceRight.some.every.indexOf ...

  4. Taurus.MVC 2.2 开源发布:WebAPI 功能增强(请求跨域及Json转换)

    背景: 1:有用户反馈了关于跨域请求的问题. 2:有用户反馈了参数获取的问题. 3:JsonHelper的增强. 在综合上面的条件下,有了2.2版本的更新,也因此写了此文. 开源地址: https:/ ...

  5. 马里奥AI实现方式探索 ——神经网络+增强学习

    [TOC] 马里奥AI实现方式探索 --神经网络+增强学习 儿时我们都曾有过一个经典游戏的体验,就是马里奥(顶蘑菇^v^),这次里约奥运会闭幕式,日本作为2020年东京奥运会的东道主,安倍最后也已经典 ...

  6. 真正的汉化-PowerDesigner 16.5 汉化

    一.背景 经常使用PowerDesigner,之前使用15版本,后来16出来后,就一直在使用16,不过一直是英文.一些同事对使用英文版总显示有些吃力. 遍寻百度.必应,都没有找到真正的针对版本16的汉 ...

  7. 升讯威ADO.NET增强组件(源码):送给喜欢原生ADO.NET的你

    目前我们所接触到的许多项目开发,大多数都应用了 ORM 技术来实现与数据库的交互,ORM 虽然有诸多好处,但是在实际工作中,特别是在大型项目开发中,容易发现 ORM 存在一些缺点,在复杂场景下,反而容 ...

  8. 用VB脚本批到导入字段到PowerDesigner

    在PowerDesigner使用脚本批量导入excel中记录的表结构信息,由于需要通过powerdesigner逆向工程创建一些sybase IQ的表,由于是接口数据,只有excel表,手动导入太耗时 ...

  9. PowerDesigner(数据建模)使用大全

    什么是PowerDesigner 引入百度百科的说法是: power designer是能进行数据库设计的强大的软件,是一款开发人员常用的数据库建模工具.使用它可以分别从概念数据模型(Conceptu ...

随机推荐

  1. JavaScript笔记基础篇(一)

    一. 常用正则表达式汇总以及部分问题解决方案 正则匹配: var str = "This is my test"; var test = new RegExp("test ...

  2. SQLServer日志无法收缩原因分析及解决

    SQL Server中的事务日志无疑是SQL Server中最重要的部分之一.因为SQL SERVER利用事务日志来确保持久性(Durability)和事务回滚(Rollback).从而还部分确保了事 ...

  3. 【原】JS原型的动态性及实例与原型的关系

    今天再读了<JS高程>的第六章,有了些深入的感悟和理解,总结分享一下. 创建对象的方式有很多,有一种是动态原型模式,最实用的是构造函数与原型组合的模式,原型的动态性在这两个模式里都有所体现 ...

  4. WPS项目编号问题

    问题:文档需要编号如下: 1.(标题1) 1.1(标题2) 1.1.1(标题3) 1.2 1.2.1 2.(标题1) 2.1(标题2) 2.1.1(标题3) 2.2 2.2.1 方法一: 第一步,打开 ...

  5. ssh 互通脚本

    实现了 主机到指定机器的ssh免密码登录. 若要实现互通, 则在机器列表的每台机器上执行该脚本. 192.168.1.22 root test 192.168.1.25 root test 192.1 ...

  6. Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK fla

      转载于 http://blog.csdn.net/wike163/article/details/6678073    从一个Activity中要通过intent调出另一个Activity的话,需 ...

  7. 用python监控Linux,CPU,内存,硬盘

    #!/usr/local/bin/python3.5 #coding:utf-8 import mailll, linecache, re, socket, os, time hostname = s ...

  8. C# webApi 与 AngularJs 实现增删改Demo 讲解(一)

    公司在使用webAPI+AngularJs+SlcikGrid进行产品开发,自己也是初学Angular,就做了一个Demo,实现增删改功能,希望可以帮助大家. 界面如同所示:  数据库一张单表很简单, ...

  9. Vmware /CentOS访问Windows中的文件

    1.将该文件设为共享文件夹 2.确定你的windows IP地址,用户名及密码 3.CentOS终端输入以下内容:   [root@*** mnt]# mkdir winD   [root@*** m ...

  10. linux 系统下,如何清空文件内容

    最近用 crontab命令 做了一些 同步任务,可后期同步任务的代码没用了,于是,我就直接删除了 代码(对应的jar包),但是 crontab -e 的命令行没有删除 ,以后,每天我的Azure vm ...