您知道系统中是否有类似MS CRM实体的全球参考书?
我需要将实体ID解析为实体类型,而不检查每个实体是否存在给定的GUID。
有可能吗?
答案 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?