找出预操作中哪个实体类型注释所属

时间:2014-10-07 09:47:08

标签: c# dynamics-crm dynamics-crm-2013

我对Dynamics CRM中的annotation实体有非常特殊的情况。

由于此类型的记录几乎可以属于系统中的任何实体类型,因此在检索之前无法确定它所属的实体类型。

这是我到目前为止所发现的。我检查了每一种可能性,但是在插件的执行上下文中或者在任何其他地方都找不到任何信息。

根据您的经验,您可以指出某种间接指示符,它在Retrieve / RetrieveMultiple消息的运行前阶段显示annotation哪个实体此注释真的属于。

例如,我有关于帐户和联系人的说明。我希望仅在为与帐户关联的注释调用RetrieveMultiple时才启动插件。

1 个答案:

答案 0 :(得分:2)

annotation绑定到记录的属性是objectid字段。

objectidEntityReference,因此您可以知道投射该字段的实体逻辑名称:

EntityReference objectRef = (EntityReference)annotation["objectid"];
string entityName = objectRef.LogicalName;

相同的信息存储在objecttypecode字段中。

如果您需要检索与帐户相关的所有备注,可以使用此FetchXml:

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
  <entity name="annotation">
    <attribute name="subject" />
    <attribute name="notetext" />
    <attribute name="filename" />
    <attribute name="annotationid" />
    <order attribute="subject" descending="false" />
    <link-entity name="account" from="accountid" to="objectid" alias="ad"></link-entity>
  </entity>
</fetch>

这是由此高级查找生成的FetchXml:

enter image description here