数据库架构属性的自定义填充和布局定制

在之前的文章中(和),提到了YACGEN的核心功能是能够对数据库架构进行编目和存储,然后通过用户定义的模板生成输出。存储的标准数据库属性包括字段名称、大小和数据类型。除此之外,其他属性都不是必需的,也不会被自动填充。

任何加粗的字段属性都是由数据库提供者(目前只有SQL Server版本2000到2008)填充的,如下图所示:

如果使用YACGEN填充数据库,会发现许多未加粗的属性也被填充了。例如,Alt Field Name属性包含适当添加空格的字段名称(ProductID变为Product ID)。Fixed属性包含移除任何空白字符或非字母数字字符的字段名称。

表字段包含表名的复数和单数形式(例如,Territory和Territories)。那么,这些属性是如何被填充的呢?

YACGEN可以在架构填充期间对任何表或字段属性执行Python代码。这一功能由Microsoft IronPython引擎提供。这段代码是由用户定义的,并且可以随时修改。要查看与给定属性关联的代码,请转到DB Layout Settings标签并选择Code标签:

在这里,将看到一个四列网格和一个包含代码的大型文本框。第一列代表要填充的属性。第二列包含要评估的Python表达式。第三列标识它是字段属性还是表属性。最后一列标识表达式何时被评估。这可以是新项目(第一次填充时)、现有字段(仅在后续架构更新时)或两者兼有。网格下方的大型文本框包含Python代码。

表达式可以是任何有效的IronPython表达式,可以对任何YACGEN属性执行操作。这些属性的列表可以在之前的文章中看到。例如,CharWidth2和CharWidth3属性在首次编目时用字段的Width属性填充。还有更复杂的表达式,如PixelWidth,如果字符宽度小于100个字符,则用字符宽度乘以8填充;否则,它是400:

Width > 100 and 400 or Width * 8

这是Python等同于C#三元运算符或VB中的iif。然而,如果进一步查看,会看到一个iif表达式:

Python iif(tableLayout.Properties[ " IsView" ] == " True" , " " ,GetSQL())

对于了解Python的人来说,他们知道iif不是Python表达式。该函数在代码文本框中定义,如下所示:

Python def iif(expression,truecon, falsecon): if expression == True : return truecon else: return falsecon

因此,可以创建自己的函数,在架构填充期间调用。

还可以执行代码以填充表属性。例如,表属性用表名的复数和单数形式填充。这在生成单个对象实例(即Product)、集合或操作(Products或GetAllProducts)的名称时很有用。这一直运作良好,直到最近有一个以Address结尾的表。原始函数假设如果名称以's'结尾,它已经是复数形式。因此,逻辑发生了变化以反映这一点。新的代码如下所示:

Python def makePlural(fieldName): if fieldName[- 1 ] == " y" : fieldName = fieldName[:- 1 ] + " ies" elif fieldName[- 1 ] != " s" : fieldName = fieldName + " s" elif fieldName[-2:] == " ss" : fieldName = fieldName + " es" return fieldName

如果输入一个不存在的属性,它将将属性添加到架构中。这允许添加自定义属性。可以添加任意数量的自定义属性。一旦属性被添加,就可以通过在模板中简单地引用<#propertyname#>来在模板中使用。如果定义了一个新的字段属性,它将出现在字段属性的第二个标签页中。

例如,可能想要创建一个存储字段名称大写的属性。因此,在网格中添加一个新行,并输入UpperCaseFieldName作为属性名称。输入表达式FieldName.upper()。确保将属性类型标记为字段。选择更新所有字段(新的和现有的)。结果应该如下所示:

现在,处理现有数据库或导入新的数据库架构。这将对每个字段执行表达式。选择任何字段并转到第二个标签页。应该看到类似于以下内容:

属性UpperCaseFieldName已添加到每个字段属性中。可以通过输入<#UpperCaseFieldName#>在模板中引用该属性。还可以在任何Python表达式中引用该属性。

属性布局

虽然可以通过Properties框访问新字段属性,但可能希望在其自己的文本框中显示它或自定义显示。可以更改属性标签并分配不同的属性。要做到这一点,请转到DB Layout Settings标签并选择Property Settings子标签。

从下拉菜单中选择现有属性。这是新属性和标签将显示的地方。输入要显示的新标签和属性名称。由于新属性可能是自定义属性,因此没有新属性名称的下拉菜单。使用前面的例子,输入自定义属性UpperCaseFieldName。

保存配置并重新启动YACGEN。现在应该在指定属性的位置看到新标签和属性显示。

可能只想更改标签,而不是更改要显示的属性。在New ID列下输入与Name列相同的属性。

结论

希望这为提供了有关更新自定义属性和布局的更好理解。未来的文章可能包括有关如何访问YACGEN架构对象模型的更多信息。任何反馈都是受欢迎的,包括(建设性的)批评。如果要评分低于3,将不胜感激反馈。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485