在MS Dynamics CRM中将实体ID解析为实体类型

时间:2014-10-07 10:23:43

标签: dynamics-crm-2011 dynamics-crm dynamics-crm-2013

您知道系统中是否有类似MS CRM实体的全球参考书?

我需要将实体ID解析为实体类型,而不检查每个实体是否存在给定的GUID。

有可能吗?

2 个答案:

答案 0 :(得分:1)

我不知道任何支持的方式,但我相信你可以在数据库中的PrincipalObjectAccess表上进行SQL查询,并检索ObjectTypeCode的值,其中ObjectId是GUID。

答案 1 :(得分:1)

对于annotation,您需要查看字段objecttypecode以确定objectid的实体类型。

您可以在代码中生成实体逻辑名称和对象类型代码列表作为Dictionary对象(这将为您提供最快的性能,但需要您知道将在系统中的所有实体类型在您编译时)或(如果您使用的是CRM 2011 UR12 +或CRM 2013),您可以执行MetadataQuery

您可以在此处详细了解如何进行元数据查询:http://bingsoft.wordpress.com/2013/01/11/crm-2011-metadata-query-enhancements/

您的要求的示例代码:

var objTypeCode = [INTEGER] //Make this this the annotation.objecttypecode

MetadataFilterExpression entityFilter = new MetadataFilterExpression(LogicalOperator.And);
EntityFilter.Conditions.Add(new MetadataConditionExpression("ObjectTypeCode", MetadataConditionOperator.Equals, objTypeCode);
EntityQueryExpression entityQueryExpression = new EntityQueryExpression()
{
     Criteria = entityFilter
};
RetrieveMetadataChangesRequest retrieveMetadataChangesRequest = new RetrieveMetadataChangesRequest()
{
     Query = entityQueryExpression,
     ClientVersionStamp = null
};

RetrieveMetadataChangesResponse response = (RetrieveMetadataChangesResponse)orgService.Execute(retrieveMetadataChangesRequest);

您可以减少检索到的元数据,以获得更好的性能,如下所示:How to get the CRM Entity Name from the Object Type Code of a RegardingID?