2

在我们的解决方案中,我们正在动态构建HTTP/ODATA请求。如何在CRM 2016中检索实体名称

例如,我们将构建一个类似如下的URL:

[http://org....api/v8.1/]accounts(00000000-0000-0000-0000-000000000001)/primarycontactid?$select=fullname 

我们如何动态地获取所有的实体,如账户“名单?

2011年,我们只是针对LeadSet/AccountSet/etcSet执行,2016年的战略是什么?

回答

4

我不知道是否有一些“语言”技巧(显然这个集合的名称只是实体英文中的复数名称,但对我来说这还不够好),所以我就这样 - 只需拨打的WebAPI的元数据:

http://[crmurl]/api/data/v8.2/EntityDefinitions?$select=EntitySetName,LogicalName&$filter=LogicalName eq 'account' 

结果如下:

{ 
    "@odata.context":"http://[crmurl]/api/data/v8.2/$metadata#EntityDefinitions(EntitySetName,LogicalName)","value":[ 
    { 
     "EntitySetName":"accounts","LogicalName":"account","MetadataId":"70816501-edb9-4740-a16c-6a5efbc05d84" 
    } 
    ] 
} 

所以你的想法。当然,你可以简单地跳过$filter部分,只需获取所有集合名称的列表并将它们缓存在某处。

1

好吧,如果你想在实体列表中,你可以简单地查询和解析服务的这样的根:

https://contoso.api.crm.dynamics.com/api/data/v8.1/

如果你想要的字段也一样,你可以做这样的:

https://contoso.api.crm.dynamics.com/api/data/v8.1/ $元

+0

您可以检查列表所有使用这种技术的实体集合,但是您没有映射,哪个EntitySet与哪个实体相关。当然,通过查看它你知道,“账户”是为“账户”设置的实体,但你也应该有一些算法来确保 –

2

另一种方法是从单数名称生成复数名称。

据我了解,在Web API V8 +变复数的实体名称的规则是:

  • 与S,X,Z,CH,或sh结尾:添加 'ES'
  • 结束与Y:删除 'Y',加上 'IES'
  • 其他:加 'S'

这里是我使用这个JavaScript函数:

function pluralName (name) { 
    var plural = ''; 
    if (name != null && typeof(name) == 'string') { 
     var len = name.length; 
     var lastChar = len > 0 ? name.slice(-1) : ''; 
     var last2Chars = len > 1 ? name.slice(-2) : ''; 

     if (lastChar == 's' || lastChar == 'x' || lastChar == 'z' || last2Chars == 'ch' || last2Chars == 'sh') { 
      plural = name + 'es'; 
     } 
     else if (lastChar == 'y') { 
      //strip off last character and add suffix 
      plural = name.substr(0, len - 1) + 'ies'; 
     } 
     else { 
      plural = name + 's'; 
     } 
    } 
    return plural; 
} 
3

1.To获得你的CRM提供的所有实体:

https://<your org name>.crm.dynamics.com/api/data/v8.2/ 

2.To获得的所有记录的元数据信息(检索多个记录):

https://<your org name>.crm.dynamics.com/api/data/v8.2/accounts? 

3.To得到特定的记录电子邮件地址信息(检索单个记录)。什么都我们选择的属性SELECT子句中,我们可以得到这些属性信息的结果:

https://<your org name>.crm.dynamics.com/api/data/v8.2/accounts?$select=emailaddress1&$filter=accountid eq <GUID goes here> 

4.To获得整个元数据信息在CRM:

https://<your org name>.crm.dynamics.com/api/data/v8.2/EntityDefinitions