可以在具有关系的表之间映射列。 这样,便可以为在另一条记录的上下文中创建的记录设置默认值。 使用应用程序中的自定义功能映射表;请参阅 映射列。
应用程序中的行为
在创建与另一条记录关联的新记录时,Microsoft Dataverse中的映射简化了数据输入。 当表与另一个表有关系时,可以使用功能区中的“创建相关”选项卡创建新的相关记录。 以这种方式创建新记录时,主记录中的映射数据将复制到新相关记录的窗体中。 通过映射表列,可以通过在两个表之间的关系中添加新映射来控制复制的数据。 如果不是从主表的关联视图创建记录,则不会映射数据。
例如,你可能想要在帐户中的地址列和联系人中的地址列之间设置映射。 使用此映射时,当用户添加与特定帐户关联的联系人时,将自动填充联系人的地址列。
可以将一列映射到多个目标列。 例如,可以将帐户中的地址信息映射到订单中的帐单和寄送地址。
在创建新的相关记录之前应用映射。 用户可以在保存记录之前进行更改。 以后对主记录中的数据所做的更改不会应用于相关记录。
使用表和列映射数据
使用 Web API
使用 Web API 时,可以使用 InitializeFrom 函数 在表之间存在映射的现有记录的上下文中创建新记录。
从 InitializeFrom 请求收到的响应由源表和目标表之间的映射列的值以及父记录的 GUID 组成。 具有关系的表之间的列映射对于不同的表集是不同的,并且是可自定义的,因此 InitializeFrom 函数请求的响应可能因不同的表和组织而异。 在新记录的创建请求正文中传递该响应数据时,这些列值将复制到新记录中。 在此过程中,自定义映射列的值也会在新记录中设置。
Note
若要确定是否可以映射两个表,请使用以下 Web API 请求:GET [Organization URI]/api/data/v9.0/entitymaps?$select=sourceentityname,targetentityname&$orderby=sourceentityname
有关详细信息,请参阅 从另一条记录创建新记录。
使用 SDK for .NET
在表之间存在映射的现有记录上下文中创建新记录时,可以使用 InitializeFromRequest 该消息来定义包含映射中指定的值的新记录。 然后,可以使用IOrganizationService。 Create 保存记录的方法。 通过这种方式,将应用你定义的任何映射。
创建关系时会创建有效的表映射。 使用 entity_map_attribute_maps 关系检索表映射所指定的表对的列映射。
可以创建或更新列映射记录。 列映射必须满足以下要求:
- 类型 AttributeMetadata 必须匹配。
- 目标列的长度不能比源列短。
- 格式必须匹配。
- 目标列不得在另一个映射中使用。
- 源列必须在窗体上可见。
- 目标列必须是用户可以在其中输入数据的字段。
- 无法映射地址 ID 值。
- PartyList 列,其中 AttributeMetadata.AttributeType 为 AttributeTypeCode 时,无法映射 PartyList 列。
表之间的自动映射列
可以编辑表与支持映射的关系之间的列映射。
除了手动创建每个列映射之外,还可以使用 AutoMapEntity 消息(AutoMapEntity 操作 或 AutoMapEntityRequest 类)生成一组新的列映射。 此消息执行工具栏上更多操作菜单中生成映射菜单选项下的操作(请参阅自动生成列映射)。 此消息映射两个相关表之间的所有列,其中列名称和类型相同。 此消息作为生产力增强功能提供,因此无需手动添加所有列映射。 而是,可以生成一组可能的映射,并将添加或删除单个映射所需的手动工作量降到最低,以满足你的要求。
Note
以这种方式自动生成映射将删除任何以前定义的列映射,并可能包括不需要的映射。
检索表和列映射
查看已创建的映射的一种简单方法是使用以下 FetchXML 查询。 有关如何运行此查询的详细信息,请参阅 使用 FetchXml 查询数据。
<fetch>
<entity name='entitymap'>
<attribute name='sourceentityname'/>
<attribute name='targetentityname'/>
<link-entity name='attributemap' alias='attributemap' to='entitymapid' from='entitymapid' link-type='inner'>
<attribute name='sourceattributename'/>
<attribute name='targetattributename'/>
</link-entity>
</entity>
</fetch>