C# 如何在CRM 2016中检索实体名称
在我们的解决方案中,我们动态地构建HTTP/ODATA请求 例如,我们将构建一个如下所示的URL:C# 如何在CRM 2016中检索实体名称,c#,visual-studio,dynamics-crm-2011,dynamics-crm,dynamics-crm-2016,C#,Visual Studio,Dynamics Crm 2011,Dynamics Crm,Dynamics Crm 2016,在我们的解决方案中,我们动态地构建HTTP/ODATA请求 例如,我们将构建一个如下所示的URL: [http://org....api/v8.1/]accounts(00000000-0000-0000-0000-000000000001)/primarycontactid?$select=fullname 如何动态获取所有实体(如“账户”)的列表? 2011年,我们将简单地执行LeadSet/AccountSet/etcSet,2016年的策略是什么?我不知道是否有一些“语言”技巧(显然,
[http://org....api/v8.1/]accounts(00000000-0000-0000-0000-000000000001)/primarycontactid?$select=fullname
如何动态获取所有实体(如“账户”)的列表?
2011年,我们将简单地执行LeadSet/AccountSet/etcSet,2016年的策略是什么?我不知道是否有一些“语言”技巧(显然,集合的名称只是实体的英文复数名称,但这对我来说还不够好),所以我喜欢这样-只需调用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
部分,只需获取所有集合名称的列表并将其缓存到某个位置。如果您需要实体列表,您可以像这样简单地查询和解析服务的根目录:
如果还需要这些字段,可以执行以下操作:
$metadata
另一种方法是从单数名生成复数名 据我所知,Web API v8+中实体名称复数的规则如下:
- 以s、x、z、ch或sh结尾:添加“es”
- 以y结尾:删除“y”,添加“y”
- 其他:添加's'
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;
}
1.要获取crm中可用的所有实体:
https://<your org name>.crm.dynamics.com/api/data/v8.2/
https://.crm.dynamics.com/api/data/v8.2/
2.要获取所有记录元数据信息(检索多个记录):
https://.crm.dynamics.com/api/data/v8.2/accounts?
3.获取特定记录的电子邮件地址信息(检索单个记录)。无论我们在select子句中选择了什么属性,我们都可以在结果中获得这些属性信息:
https://<your org name>.crm.dynamics.com/api/data/v8.2/accounts?$select=emailaddress1&$filter=accountid eq <GUID goes here>
https://.crm.dynamics.com/api/data/v8.2/accounts?$select=emailaddress1&$filter=accountid eq
4.要在CRM中获取完整的元数据信息:
https://<your org name>.crm.dynamics.com/api/data/v8.2/EntityDefinitions
https://.crm.dynamics.com/api/data/v8.2/EntityDefinitions
您可以使用此技术检查所有实体集的列表,但没有映射,即哪个实体集与哪个实体相关。当然,通过查看它,您知道,“accounts”是为“account”设置的实体,但您还应该有一些算法来确保这一点
https://<your org name>.crm.dynamics.com/api/data/v8.2/EntityDefinitions