利用宏让ERStudio生成代码文件
2007-12-29 14:41
681 查看
Embarcadero ERStudio 是一个数据模型工具,用起来很方便。在ERStudio里建完数据模型后,可以利用宏来帮助生成对应的实体类文件以及对应的简单的数据访问类文件。为了实现这一目的,需要自己写脚本,支持的语言为 VB(以前从没写过VB程序,还好可以利用 Microsoft Visual Studio 文档),ERStudio 也提供了一系列的帮助文档,也有相关DEMO,最主要的是要获得相关Model的属性信息。这些可以在 ERStudio 文档里查看帮助。
在 ERStudio 自带的编辑工具来写VB脚本还不错,Tools -- 〉Basic Macro Editor 打开编辑器。然后就可以开始写脚本了,编辑器提供了一个简单的 窗体编辑工具 Edit UserDialog ,可以画出用户交互界面,选择后的控件如果不知道怎么用的话,将光标停在CODE上按F1会打开帮助文档,里面符有简单的Demo。
编辑器也提供Debug功能,不过感觉调试起来很痛苦,没有VS里调试爽,不过用处还是蛮大的,脚本写好后默认保存的路径在安装文件所属路径的 Macros 文件夹里,通过 Macro Shortcuts -- Add/Remove Macro Shortcuts 来管理宏文件。打开 Add/Remove Macro 对话框后可以在 Available Macros 下边看到可用的宏文件,在Selected Macros下面可以看到已经选择使用的宏文件。
点击这里可以下载示例脚本 .
下面的代码获取Model和其下的SubModel:
Dim entNames As Variant
Dim entCount As Variant
Dim varModel As Model
Dim varSubModel As SubModel
'Get Model Object
Set varModel =DiagramManager.ActiveDiagram.ActiveModel
'Get SubModel Object
Set varSubModel = varModel.ActiveSubModel
'Fill The EntityName To entName and Get the Entity Count
varSubModel.EntityNames(entNames,entCount)
获取SubModel的TableName:
varEntity.TableName
获取SubModel的指定索引的字段
'Get Entity Attribute
Function GetAttribute(attrs As Attributes, Index As Integer)
Dim attr As AttributeObj
For Each attr In attrs
If attr.SequenceNumber=Index Then
Set GetAttribute=attr
Exit Function
End If
Next
Set GetAttribute=Nothing
End Function
判断某一字段是不是主键:
Set attr = GetAttribute(varEntity.Attributes, i)
If Not attr Is Nothing Then
If attr.PrimaryKey Then
'do something
End If
End If
还有一个很重要的一点就是要把数据库类型转化为.Net对应的类型:
'Get .NET Data Type
Function DbTypeToNetType(attr As Object)
Dim netType As String
Select Case attr.Datatype
Case "CHAR"
netType = "string"
Case "VARCHAR2"
netType = "string"
Case "NVARCHAR"
netType = "string"
Case "NVARCHAR2"
netType = "string"
Case "VARCHAR"
netType = "string"
Case "NTEXT"
netType = "string"
Case "NTEXT/LONG NVARCHAR"
netType = "string"
Case "DATETIME"
netType = "DateTime"
Case "DATE"
netType = "DateTime"
Case "DECIMAL"
netType = "decimal"
Case "FLOAT"
netType = "float"
Case "NUMERIC"
If attr.DataScale = 0 Then
netType = IIf(attr.DataLength > 9,"decimal","int")
Else
netType = IIf(attr.DataScale < 29,"decimal","double")
End If
Case "INTEGER"
netType = "int"
Case "BIT"
netType = "bool"
Case "SMALLINT"
netType = "int"
Case Else
netType = "string"
End Select
DbTypeToNetType = netType
End Function
将字符串中的下划线去掉,将下划线后的第一个字母变为大写返回,如:_ab_cde_ 返回为 AbCde:
'Remove UnderLine From String And Change The First Character To Capital
Function RemoveUnderLine(varRetStr As String, varString As String,length As Integer )
If length > 0 Then
Dim char As String
char = Left$(varString,1)
If char <> "_" Then
varRetStr = IIf(Len(varRetStr) = 0,UCase(char),varRetStr & char)
varString = Right$(varString,length-1)
Else
varString = Right$(varString,length-1)
If Len(varString) > 0 Then
varString = UCase(Left$(varString,1)) & Right$(varString,Len(varString)-1)
End If
End If
varRetStr = RemoveUnderLine (varRetStr,varString,Len(varString))
End If
RemoveUnderLine = varRetStr
End Function
这样会帮我们省去大量的工作,可订制性也比较好,当然不要把这个和别的代码生成工具比较....
提高工作效率才是硬道理~~~~~~
在 ERStudio 自带的编辑工具来写VB脚本还不错,Tools -- 〉Basic Macro Editor 打开编辑器。然后就可以开始写脚本了,编辑器提供了一个简单的 窗体编辑工具 Edit UserDialog ,可以画出用户交互界面,选择后的控件如果不知道怎么用的话,将光标停在CODE上按F1会打开帮助文档,里面符有简单的Demo。
编辑器也提供Debug功能,不过感觉调试起来很痛苦,没有VS里调试爽,不过用处还是蛮大的,脚本写好后默认保存的路径在安装文件所属路径的 Macros 文件夹里,通过 Macro Shortcuts -- Add/Remove Macro Shortcuts 来管理宏文件。打开 Add/Remove Macro 对话框后可以在 Available Macros 下边看到可用的宏文件,在Selected Macros下面可以看到已经选择使用的宏文件。
点击这里可以下载示例脚本 .
下面的代码获取Model和其下的SubModel:
Dim entNames As Variant
Dim entCount As Variant
Dim varModel As Model
Dim varSubModel As SubModel
'Get Model Object
Set varModel =DiagramManager.ActiveDiagram.ActiveModel
'Get SubModel Object
Set varSubModel = varModel.ActiveSubModel
'Fill The EntityName To entName and Get the Entity Count
varSubModel.EntityNames(entNames,entCount)
获取SubModel的TableName:
varEntity.TableName
获取SubModel的指定索引的字段
'Get Entity Attribute
Function GetAttribute(attrs As Attributes, Index As Integer)
Dim attr As AttributeObj
For Each attr In attrs
If attr.SequenceNumber=Index Then
Set GetAttribute=attr
Exit Function
End If
Next
Set GetAttribute=Nothing
End Function
判断某一字段是不是主键:
Set attr = GetAttribute(varEntity.Attributes, i)
If Not attr Is Nothing Then
If attr.PrimaryKey Then
'do something
End If
End If
还有一个很重要的一点就是要把数据库类型转化为.Net对应的类型:
'Get .NET Data Type
Function DbTypeToNetType(attr As Object)
Dim netType As String
Select Case attr.Datatype
Case "CHAR"
netType = "string"
Case "VARCHAR2"
netType = "string"
Case "NVARCHAR"
netType = "string"
Case "NVARCHAR2"
netType = "string"
Case "VARCHAR"
netType = "string"
Case "NTEXT"
netType = "string"
Case "NTEXT/LONG NVARCHAR"
netType = "string"
Case "DATETIME"
netType = "DateTime"
Case "DATE"
netType = "DateTime"
Case "DECIMAL"
netType = "decimal"
Case "FLOAT"
netType = "float"
Case "NUMERIC"
If attr.DataScale = 0 Then
netType = IIf(attr.DataLength > 9,"decimal","int")
Else
netType = IIf(attr.DataScale < 29,"decimal","double")
End If
Case "INTEGER"
netType = "int"
Case "BIT"
netType = "bool"
Case "SMALLINT"
netType = "int"
Case Else
netType = "string"
End Select
DbTypeToNetType = netType
End Function
将字符串中的下划线去掉,将下划线后的第一个字母变为大写返回,如:_ab_cde_ 返回为 AbCde:
'Remove UnderLine From String And Change The First Character To Capital
Function RemoveUnderLine(varRetStr As String, varString As String,length As Integer )
If length > 0 Then
Dim char As String
char = Left$(varString,1)
If char <> "_" Then
varRetStr = IIf(Len(varRetStr) = 0,UCase(char),varRetStr & char)
varString = Right$(varString,length-1)
Else
varString = Right$(varString,length-1)
If Len(varString) > 0 Then
varString = UCase(Left$(varString,1)) & Right$(varString,Len(varString)-1)
End If
End If
varRetStr = RemoveUnderLine (varRetStr,varString,Len(varString))
End If
RemoveUnderLine = varRetStr
End Function
这样会帮我们省去大量的工作,可订制性也比较好,当然不要把这个和别的代码生成工具比较....
提高工作效率才是硬道理~~~~~~
相关文章推荐
- Axis2发布webservice(3)--axis2生成wsdl文件,并利用wsdl文件来生成WebService的Java代码
- 利用wsdl文件生成webservice客户端代码
- Android利用dimens.xml进行适配,使用代码生成不同的dimens.xml文件
- Android Studio利用Gradle删除没有使用到的资源和代码文件
- ER Studio设计模型 代码生成
- FluentData-新型轻量级ORM 利用T4模板 批量生成多文件 实体和业务逻辑 代码
- Axis2发布webservice(3)--axis2生成wsdl文件,并利用wsdl文件来生成WebService的Java代码
- Android Studio利用Gradle删除没有使用到的资源和代码文件
- 【SSH】利用applicationContext.xml文件结合java代码生成项目所需的数据库
- 利用axis1.4根据wsdl文件生成对应的java代码
- 利用wsdl文件生成webservice接口的java客户端测试代码
- Android利用dimens.xml进行适配,使用代码生成不同的dimens.xml文件
- 利用Python 脚本生成 .h5 文件 代码
- 利用CXF和服务端代码生成WSDL文件
- asn1c - 利用asn1c强ASN文件生成C代码
- 利用c++Test生成构建数据文件 ("build data file"),bdf文件
- 怎样利用控制台cmd生成后缀为csv的文件
- python方法生成txt标签文件的实例代码
- 简单代码生成csv文件(excel)
- 利用Java注解将常量类生成js文件供前端调用 推荐