Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在CRM 2016中检索实体名称_C#_Visual Studio_Dynamics Crm 2011_Dynamics Crm_Dynamics Crm 2016 - Fatal编程技术网

C# 如何在CRM 2016中检索实体名称

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/ODATA请求

例如,我们将构建一个如下所示的URL:

[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'
下面是我用于此目的的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;
}

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