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