Dynamics AX 2012 R2 Table Relation Properties
Created at 2015-01-05 Updated at 2018-05-06 Category Microsoft Dynamics AX
AOT > Data Dictionary > Tables > MyTable > Relations.
The related primary key or alternate key field is in the referenced table, which is also called the parent table.
属性 | 描述 | New in this version of Microsoft Dynamics AX |
---|---|---|
Cardinality(基数) | 从引用表的每个主键值必须发生在本表的外键列的次数。例如,该值OneMore指一个或多个,但不是零。这意味着,每各父表的主键值必须出现在子表的外键列至少一次。如果业务规则规定,在父SalesTable表中的每个记录涉及到至少一个正在销售的项目。那么一个SalesLine表下面的一个关系节点, 应该使用OneMore值.在Microsoft Dynamics AX 2012此属性尚未被系统使用。本产品的未来版本可能会使用这个属性,以及RelatedTableCardinality属性。 | Microsoft Dynamics AX的2012 |
CreateNavigationPropertyMethods | Yes指示系统在表缓冲区类为每个外键关系的节点生成的导航方法。有关导航方法的详细信息,请参阅CreateNavigationPropertyMethods和RelatedTableRole 。 | Microsoft Dynamics AX的2012 |
EDTRelation | Yes指这种关系是通过软件工具,从一个老的extended data type(EDT)关系迁移到这里。 | Microsoft Dynamics AX的2012 |
EntityRelationshipRole | 该EntityRelationshipRole属性是用来阐明在表上定义的关系的语义。角色名应该是名词或名词短语。角色名称应注明相关的表中就关联对象的作用,或者它应该是一个短的词组,用现在时态动词,表示该表中起着关系中的作用开始。当关系是明确的时, 角色名不是必需的。 | |
Model | 这种关系是一部分的模型。 | Microsoft Dynamics AX的2012 |
Name | 您选择的关系的描述性名称。 | |
NavigationPropertyMethodNameOverride | 指定的导航方法的名称。如果没有指定值,导航方法使用RelatedTableRole属性的值。有关导航方法的详细信息,请参阅CreateNavigationPropertyMethods和RelatedTableRole 。 | Microsoft Dynamics AX的2012 |
RelatedTableCardinality(基数) | 指定在当前表中外键字段值是否可以在部分或全部记录行中为null。可能的值如下: 1. ZeroOne -指零次或一次。这意味着在一个子记录的外键字段可以为null。 2. ExactlyOne上 -意味着外键字段在任何子记录上都不能为null。 | Microsoft Dynamics AX的2012 |
RelatedTableRole | 您键入一个文本,用来描述在该关系中引用父表的目的。当一个表只有一个关系, 它是引用给定的父表,那么您可以使用父表的名称作为RelatedTableRole的名称。有时一个表与给定引用父表之间有多个关系。在这种情况下,RelatedTableRole属性值应该尽量说明的该关系,从而能够区分另一个引用了同一个父表的关系的目的.该属性的值可作为, 那些基于AOT查询的数据源关系的JoinRelation属性的值。在标准情况下,这种用法是建议,因为它减少了非规范化。该属性与UseDefaultRoleNames属性互动。 有关RelatedTableRole和JoinRelation属性之间的交互的详细信息,请参阅RelatedTableRole和查询JoinRelation 。 | Microsoft Dynamics AX的2012 |
RelationshipType | 你选择一个值,描述两个表之间的微妙关系。例如,值Composition意味着子记录 在脱离了指定父记录时, 不能有意义地存在。在Floor表中的第四层的记录,不能脱离了父Building表而存在。 有关此属性的可用值的更多信息,请参阅了解的RelationshipType枚举或的RelationshipType 。 在Microsoft Dynamics AX 2012此属性尚未被系统使用。本产品的未来版本可能会使用这个属性。 |
Microsoft Dynamics AX的2012 |
Role | 一个用以描述关系的意义或角色的名称。例如,部门表的关系,可以跟踪该雇员目前属于的部门。同时另一个关系可以跟踪该雇员已要求转移的部门。两者都关系到部门表,但两人的关系都尽显不同的角色。在实践中,一个精美的值往往是父子表通过_下划线连接的名称。例如,SalesTable_SalesLine。该属性与UseDefaultRoleNames属性交互。 | Microsoft Dynamics AX的2012 |
Table | 该关系中引用的。 | |
UseDefaultRoleNames | Yes意味着系统必须为Role和RelatedTableRole属性产生的默认值。即使设置为Yes ,为Role和RelatedTableRole属性生成的值也不会显示在属性窗口中。另外, TreeNode类不使用生成的值。然而,反射类DictRelation使用生成的值。 | Microsoft Dynamics AX的2012 |
Validate | Yes指除非每一个通过窗体插入到字表中的记录都会被拒绝.除非相关的记录存在于引用的父表中。此外,通过从父表的窗体中删除一条记录不是被拒绝,而会删除子表中相关级联记录。当RelationshipType属性为Link时, 您可以使用No。比如在一些升级情景期间,你也可以在特定临时类中使用No。即使当该值设置回Yes ,在插入或删除时也不会发生验证。 |
Caution |
---|
该值设为是,并不能防止直接用X + + SQL数据操作,删除父记录,或在违反外键数据的完整性的情况下插入子记录。 |
Note |
---|
当两个表的SaveDataPerCompany属性都设置为Yes, 系统会给每个关系添加DataAreaId字段。 |
本节将介绍如何使用RelatedTableRole属性来简化创建一个新的查询。
假设在一个表关系中,您为RelatedTableRole属性输入一个显式值。然后,您可以使用该值来填充AOT>查询 > MyQuery节点下的数据源关系的JoinRelation属性。这使您可以指定的连接只在一个位置的字段。如果连接领域不断改变,你必须更新连接只在一个位置。
之前,你可以设置JoinRelation属性的值,则必须删除字段和RelatedField属性的值。
下面的两幅图显示了如何使用JoinRelation属性。
1. 第一个图片-显示了在表关系的属性,以及RelatedTableRole财产的价值被突出显示。
2. 第二个图片 – 显示了一个查询下一个数据源关系的性质。我们看到,对于JoinRelation属性的值是针对RelatedTableRole值的副本。
在表上的相关属性RelatedTableRole
在接下来的图像,我们看到了JoinRelation属性的值是值的RelatedTableRole副本从以前的形象。
在查询下一个关系的JoinRelation属性
当你在一个表关系的CreateNavigationPropertyMethods属性设置为 Yes,系统会生成导航方法为表缓冲级。一种导航方法,通过他们的外键关系连接两个表缓冲区实例。该的UnitOfWork类就是这个导航键被使用的一个区域。
对于导航方法的名称是从上表关系的RelatedTableRole属性的值复制。这是真实的,当RelatedTableRole值显式设置在属性窗口中,当由UseDefaultRoleNames设置为 Yes产生的RelatedTableRole值。
在以前的图像的属性值产生对孩子CustTable的缓冲以下导航方法。最直接的导航方法名称是从RelatedTableRole属性的值复制:
公众最终CustBankAccount bankAccounts中([CustBankAccount RELATEDTABLE])
### NavigationPropertyMethodNameOverride属性
下面的列表描述情况下,你必须覆盖该系统生成的表缓冲区类中的导航方法的名称:
表类已经有相匹配的RelatedTableRole属性值的方法名。 该RelatedTableRole属性值比启用了方法名的最大长度。
在这种情况下,你必须选择一个导航方法的有效名称,并指定该名称作为NavigationPropertyMethodNameOverride属性的值,在表的关系。