自定义实体关系元数据

 

发布日期: 2017年1月

适用于: Dynamics 365 (online),Dynamics 365 (on-premises),Dynamics CRM 2016,Dynamics CRM Online

实体关系定义实体记录与其他实体记录或同一实体记录关联的方式。 创建新的实体关系会在数据库中创建新的表关系。 使用实体关系可以定义常用的特定关联以在用户界面中关联报表的记录。 存在关系之后,您可以使用 AssociateDisassociate 方法基于关系对记录进行关联和解除关联。详细信息:对实体记录执行的操作

有关不太正式和更为灵活的单个记录间的关系,请参阅连接实体

本主题介绍如何以编程方式处理实体关系。 有关在应用程序中处理实体关系的信息,请参阅创建和编辑实体关系

本主题内容

实体关系类型

一对多关系

多对多关系

配置关联菜单

实体关系类型

Microsoft Dynamics 365 提供两种类型的实体关系。 这两种类型都继承自 RelationshipMetadataBase 类:

  • 一对多关系

  • 多对多关系

在以编程方式创建新的实体关系之前,请检查实体是否有资格参与关系。 将约束应用于实体关系,可以使用下列EntityMetadata属性:CanBeInManyToManyCanBePrimaryEntityInRelationshipCanBeRelatedEntityInRelationship。 当您在自定义工具中手动创建实体关系时,应考虑这些限制。 您可以使用很多信息来确定实体可以使用哪些关系,以及哪些实体对于该关系类型是有效的。详细信息:实体关系资格

两种类型的实体关系均允许显示相关记录之间导航链接的选项。详细信息:配置关联菜单

一对多关系

在一对多的实体关系中,多个引用(相关的)实体记录都与单个被引用(相关的)实体记录相关。 被引用的实体记录有时指的是“父”,而引用实体记录指的是“子”。

在解决方案页面上的实体节点中,这种实体关系要么显示为一个“一对多(1:N)关系”,要么显示为一个“多对一(N:1)关系”。 之所以采用这些术语,是因为您通过一个实体导航到多个实体关系。 标签反映关系中当前实体具有哪个角色。

在处理此类实体关系时,可以使用 OneToManyRelationshipMetadata 类的实例。 每个实体关系都具有一个用于对其进行检索的唯一架构名称。 有关详细信息,请参阅SchemaName。 每个此类实体关系还可以具有包含被引用属性的被引用实体(“主实体”)和包含引用属性的引用实体(“相关实体”)。 引用属性可以显示为实体窗体中的查找字段。 有关详细信息,请参阅 ReferencedEntityReferencedAttributeReferencingEntityReferencingAttribute

您可以通过将引用属性的 AttributeRequiredLevel 设置为 ApplicationRequired 来要求引用实体具有引用。 若要保持数据完整性,执行此操作时应该还指定希望发生的内容(如果主要记录已删除)。 使用 CascadeConfiguration 属性可防止删除主记录或自动删除相关记录,并可以防止产生孤立记录。

在组织的相关记录中执行特定操作时,您也可以使用级联配置来自动化行为。详细信息:实体关系行为

将数据映射到新的记录

当存在一对多实体关系时,您可以指定可以将来自被引用实体中某些字段的数据传输到关系上下文中任何新建的相关记录。 这可以在创建新的相关记录时简化数据输入。 更多信息,请参阅 自定义实体和属性映射

自参照一对多实体关系

自引用关系指该关系中引用和被引用的实体相同。 例如,帐户实体具有自引用的一对多关系,可允许标为“上级单位”的查找。 如果实体关系行为定义为“父”,则记录不可能引用其自己,因为这会在应用级联行为时创建一个循环引用。详细信息:实体关系行为

一对多实体分层关系

通过 Microsoft Dynamics 365(在线或本地),您可以指定一个自引用一对多实体关系作为指定的实体分层关系。OneToManyRelationshipMetadataIsHierarchical 属性标志此关系为实体使用的一对多关系。

所有的一对多实体关系代表一类层次结构,但是使用 IsHierarchical 属性明确标记的关系仅指支持应用程序中层次结构可视化,以及检索相关分层记录的新查询操作符的实体关系。详细信息:查询分层数据

更改 Web API 导航属性的名称

如果您要对一对多关系应用自定义 Web API 导航属性名称,您可以设置 OneToManyRelationshipMetadataReferencingEntityNavigationPropertyName PropertyReferencedEntityNavigationPropertyName Property 属性的值。

多对多关系

在一个多对多实体关系中,许多实体记录与其他实体记录相关。 和一对多关系不同,两个实体上都没有查找字段,因此没有预定的层次结构。 可以将使用多对多关系关联的记录视为对等的,并且关系是相互的。 多对多关系还可以是自引用关系。 因为多对多关系中不涉及级联行为,所以可以允许单个记录对其自身进行引用。

在处理此类实体关系时,可以使用 ManyToManyRelationshipMetadata 类的实例。 每个实体关系都具有用于对其进行检索的唯一 SchemaName

创建多对多实体关系可创建一个新交叉实体,在该实体中,IsIntersect 属性为 true。 该实体的记录跟踪各个多对多关系。 无法将自定义属性添加到相交实体。

更改 Web API 导航属性的名称

如果您要对多对多关系应用自定义 Web API 导航属性名称,您可以设置 ManyToManyRelationshipMetadataEntity1NavigationPropertyName PropertyEntity2NavigationPropertyName Property 属性的值。

配置关联菜单

两种类型的实体关系都允许配置相关记录之间的导航链接。 使用每种类型实体关系定义中的 AssociatedMenuConfiguration 属性可以指定如何显示实体窗体中的导航链接。

这些值提供关系的默认配置。 可以使用窗体编辑器替代每个窗体的这些选项。详细信息:TechNet:使用窗体编辑器:编辑导航

  • Behavior
    提供以下选项:

    • DoNotDisplay

    • UseCollectionName

    • UseLabel

  • Group
    提供以下选项:

    • 详细信息

    • 市场营销

    • 销售

    • 服务

    无法添加新组,但可以使用窗体编辑器更改为它们显示的文本。

  • 标签
    如果选择 AssociatedMenuBehavior.UseLabel,则必须提供自定义标签。

  • 订单
    为顺序提供的整数将控制导航项在组中的相对位置。 该值越低,导航项相当于组中其他项的显示位置越靠前。

另请参阅

使用含有 Dynamics 365 元数据的组织服务
实体关系元数据消息
实体关系资格
实体关系行为
创建和检索实体关系
示例:创建和检索实体关系
示例:将实体关系信息转储到文件
自定义实体和属性映射
使用交叉实体检索多对多关系的记录

Microsoft Dynamics 365

© 2017 Microsoft。 保留所有权利。 版权