MS CRM 2015 允许您指定实体之间关系的属性映射。 例如。对于下面显示的“contact_customer_accounts”关系,它定义了通过帐户的“相关联系人”视图添加新联系人时应将帐户中的哪些属性复制到联系人。
但是,当我更改此类映射(并发布所有自定义项)时,它不会作为我的解决方案(或默认解决方案)的一部分导出。 当我比较映射更改前后的customizations.xml 文件时,它们(对于相关部分)完全相同 - 此信息似乎不是导出的一部分?
我还找到了自定义解决方案文件架构,它似乎也没有提及任何有关属性映射的内容。
我认为这些信息应该是解决方案导出的一部分 - 有人知道为什么不是吗?
更新:我在我的组织中导入了我的解决方案(包含帐户和联系人)并发布。然后从“contact_customer_accounts”关系中删除一半映射并再次发布。最后导入相同的解决方案并再次发布:删除的映射没有返回。
所以我认为可以肯定地说该解决方案不包含映射信息。
我还看到您必须拥有两种关系,并且两个字段都在解决方案中定义了映射,以便导出映射...因此,如果我有实体 A 具有到 B 的映射,对于字段 A .1 到 B.1 和 A.2 到 B.2,我必须确保关系以及字段 A.1、A.2、B.1 和 B.2 也已添加到解决方案中,否则它们不会被导出。
经过进一步测试,为了将查找属性包含在映射的导出中,目标属性字段必须包含在解决方案中!
正如 Joseph Duty 指出的那样,属性映射存储在
ImportExportXml/EntityMaps
下的customizations.xml 文件中(有关如何使用它们的信息,请参阅自定义解决方案文件架构)。
然而,当导出解决方案时,它们似乎不包含任何“系统”关系,仅包含至少一个实体是自定义实体的关系。所以这可能就是为什么我的映射更改没有最终出现在解决方案导出中的原因。
好消息是,您可以手动将此类映射添加到
customizations.xml
文件中,导入后,您将看到映射出现在这些实体之间的所有关系中:
<EntityMaps>
<EntityMap>
<EntitySource>account</EntitySource>
<EntityTarget>contact</EntityTarget>
<AttributeMaps>
<AttributeMap>
<AttributeSource>telephone1</AttributeSource>
<AttributeTarget>telephone2</AttributeTarget>
</AttributeMap>
<AttributeMap>
<AttributeSource>telephone1</AttributeSource>
<AttributeTarget>telephone3</AttributeTarget>
</AttributeMap>
</AttributeMaps>
</EntityMap>
从
customizations.xml
中删除一个或多个 AttributeMap 元素不会导致相应的映射被删除,但这是使用解决方案时的常规行为。
我知道这是一篇古老的帖子,但今天我在 Dynamics CRM 2016 v9.2 On-Premise 中发生了 N:N 关系,所以我想分享我的问题解决方案。
事实证明,我以某种方式设法通过“指定自定义标签”创建了 N:N 关系,并且 实际上并未为相关实体指定标签。当我将其更改为“使用复数”、“不显示”或仅指定自定义标签后,N:N 关系已成功导入。