我对Dynamics CRM中的annotation
实体有非常特殊的情况。
由于此类型的记录几乎可以属于系统中的任何实体类型,因此在检索之前无法确定它所属的实体类型。
这是我到目前为止所发现的。我检查了每一种可能性,但是在插件的执行上下文中或者在任何其他地方都找不到任何信息。
根据您的经验,您可以指出某种间接指示符,它在Retrieve
/ RetrieveMultiple
消息的运行前阶段显示annotation
哪个实体此注释真的属于。
例如,我有关于帐户和联系人的说明。我希望仅在为与帐户关联的注释调用RetrieveMultiple
时才启动插件。
答案 0 :(得分:2)
将annotation
绑定到记录的属性是objectid
字段。
objectid
是EntityReference
,因此您可以知道投射该字段的实体逻辑名称:
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: