我们在AX中开发时,经常遇到需要处理主外键关系的情况。比如在添加员工教育经历信息时,可以通过单击“教育程度”字段的下拉按钮在列表中选择对应记录。而“教育程度”的基础数据则在相应的设置窗体进行维护。
教育程度下拉选择框如下图所示:
教育程度数据定义窗体如下图所示:
员工教育经历和教育程度记录的数据关联关系如下图所示:
HcmEducationLevel教育程度表:“EducationLevelId“为该表的自然主键,“RecId”为该表的代理主键;
HcmPersonEducation教育经历表:该表中有个“refRecId”类型的“EducationLevel”字段关联到HcmEducationLevel表的“RecId”字段作为外键)。
系统中还有非常多类似的应用场景,我们也经常会遇到需要模拟改开发模式的情况,Microsoft Dynamics AX 2012 主外键关系开发步骤如下:
1. 创建扩展数据类型
名称 | 类型 | 描述 |
HcmEducationLevelId | String | 教育程度(自然主键) |
HcmEducationLevelId | String | 描述 |
2. 创建“教育程度HcmEducationLevel”主表,属性如下表所示:
Name | HcmEducationLevel |
CacheLookup | EntireTable |
TableGroup | Reference |
ReplacementKey | IdIdx |
“HcmEducationLevel”表“EducationLevelId”字段的“Mandatory、AllowEdit”属性分别设置为“Yes”和“No”:
创建表的主索引“IdIdx”,并将该索引的“AllowDuplicates、AlternateKey”属性分别设置为“No”和“Yes”:
3. 创建扩展数据类型
名称 | 类型 | 描述 |
HcmEducationLevelRecId(RefRecId) | Int64 | 外键数据类型 |
将扩展数据类型的“ReferenceTable”属性设置为“HcmEducationLevel”
4. 在“HcmPersonEducation”表创建指向主表的关系“EducationLevel_FK”,属性设置如下图所示:
5. 在“HcmEducationLevel”表创建主表删除约束限制(如果员工的教育记录已经设置为某个教育程度,比如“大学本科”,则禁止删除教育程度表的“大学本科”记录),保证数据的参照完整性,属性设置如下图所示:
6. 分别创建主表和从表对应的窗体。
转载请注明:ww12345678 的部落格 | AX Helper » Microsoft Dynamics AX 2012 主外键关系开发范例