Dynamics 365 We API ODATA語法根據父記錄查詢子記錄,根據子記錄查詢父記錄(附

微軟動態CRM專家羅勇 ,回覆333或者20190508可方便獲取本文,同時能夠在第一間獲得我發佈的最新博文信息,follow me!api

先舉個N:N關係的例子。這裏以根據團隊的名稱查找其全部團隊成員的主要郵箱爲例。用Web API ODATA語法執行fetchxml比較容易想到,以下:架構

https://luoyongdemo.api.crm.dynamics.com/api/data/v9.1/systemusers?fetchXml=<fetch mapping='logical' no-lock='true'><entity name='systemuser'><attribute name='internalemailaddress' /><link-entity name='teammembership' from='systemuserid' to='systemuserid' visible='false' intersect='true'><link-entity name='team' from='teamid' to='teamid' alias='ab'><filter type='and'><condition attribute='name' operator='eq' value='B2C Supervisor Team' /></filter></link-entity></link-entity></entity></fetch>app

也能夠使用以下的查詢來解決,你可能會問下面查詢語法中的 teammembership_association 從哪兒來,就是該實體的N:N關係的 Schema Name。
https://luoyongdemo.api.crm.dynamics.com/api/data/v9.1/teams?$select=name&$expand=teammembership_association($select=internalemailaddress)&$filter=name eq 'B2C Supervisor Team'dom

 

還能夠使用兩次查詢來解決,以下,固然這個方法比較笨。ide

https://luoyongdemo.api.crm.dynamics.com/api/data/v9.1/teams?$filter=name eq 'B2C Supervisor Team'性能

https://luoyongdemo.api.crm.dynamics.com/api/data/v9.1/teams(
e4336d83-f45f-e911-a830-000d3a375590)/teammembership_association?$select=internalemailaddressfetch

若是換成根據隊列(Queue)的名稱來查看隊列成員呢,分別以下:spa

https://luoyongdemo.api.crm.dynamics.com/api/data/v9.1/systemusers?fetchXml=<fetch mapping='logical' nolock='true'><entity name='systemuser'><attribute name='internalemailaddress' /><link-entity name='queuemembership' from='systemuserid' to='systemuserid' visible='false' intersect='true'><link-entity name='queue' from='queueid' to='queueid' alias='ac'><filter type='and'><condition attribute='name' operator='eq' value='DS Approver IDG' /></filter></link-entity></link-entity></entity></fetch>xml

https://luoyongdemo.api.crm.dynamics.com/api/data/v9.1/queues?$select=name&$expand=queuemembership_association($select=internalemailaddress)&$filter=name eq 'DS Approver IDG'隊列


若是是1:N關係,能夠參考以下語法,注意父實體必定要指定至少一個列,不然會把父實體的全部字段查出來,很浪費性能。$expand後面的名稱也是1:N關係的架構名稱。

https://luoyongdemo.api.crm.dynamics.com/api/data/v9.1/new_returnreqs?$select=new_name&$expand=new_new_returnreq_new_returnreqapprovalhist_ReturnRequest($select=new_name)&$filter=contains(new_name,'RETURN-2019')


若是已知父記錄的ID,則還有以下語法能夠使用:
當僅僅須要返回子記錄的ID的話,有簡單語法以下:

https://luoyongdemo.api.crm.dynamics.com/api/data/v9.1/new_returnreqs(709c2ad3-7d71-e911-a82b-000d3a365662)/new_new_returnreq_new_returnreqapprovalhist_ReturnRequest/$ref

當僅僅須要返回子記錄數量的話,有以下簡單語法:

https://luoyongdemo.api.crm.dynamics.com/api/data/v9.1/new_returnreqs(709c2ad3-7d71-e911-a82b-000d3a365662)/new_new_returnreq_new_returnreqapprovalhist_ReturnRequest/$count

 

在查詢記錄的時候能夠順路查出其某個查找字段對應查找記錄的字段信息嗎?答案是能夠。以下實例,這裏使用查找字段的架構名稱:

https://luoyongdemo.api.crm.dynamics.com/api/data/v9.1/new_returnreqapprovalhists?$select=new_name&$expand=new_ReturnRequest($select=new_name,new_ordernumber)&$filter=contains(new_name,'2019')

可是對於標準的CreatedBy字段卻要使用邏輯名稱,奇怪:

https://luoyongdemo.api.crm.dynamics.com/api/data/v9.1/new_returnreqapprovalhists?$select=new_name&$expand=createdby($select=fullname)&$filter=contains(new_name,'2019')

查詢某個是否在某個團隊中能夠用下來的語法,看返回數據中 teammembership_association 元素的長度就知道,等於0就是不在這個團隊中,不然就是在。


https://luoyongdemo.api.crm.dynamics.com/api/data/v9.1/teams(
b48fc02d-3431-ea11-a810-000d3a378457)?$select=teamid&$expand=teammembership_association($filter=systemuserid eq '6df07104-1ad3-e911-a9a2-000d3a324a3e')

https://luoyongdemo.api.crm.dynamics.com/api/data/v9.1/teams?$select=name&$filter=name eq 'myteam'&$expand=teammembership_association($filter=systemuserid eq '6df07104-1ad3-e911-a9a2-000d3a324a3e')

https://luoyongdemo.api.crm.dynamics.com/api/data/v9.1/teams?$select=name&$filter=name eq 'RM I*** JP Team'&$expand=teammembership_association($filter=domainname eq 'luoyong@crm.onmicrosoft.com')

https://luoyongdemo.api.crm.dynamics.com/api/data/v9.1/teams?$select=name&$filter=
teamid eq '6f023228-b58e-ea11-a811-000d3a378a3a' or teamid eq 'b48fc02d-3431-ea11-a810-000d3a378457' or teamid eq '983e0d75-fd83-ea11-a812-000d3a33be69' or teamid eq '2ea3f893-fd83-ea11-a812-000d3a33be69'&$expand=teammembership_association($filter=systemuserid eq '6df07104-1ad3-e911-a9a2-000d3a324a3e')


 

若是要查詢負責人信息,能夠參考以下查詢:

https://luoyongdemo.api.crm.dynamics.com/api/data/v9.1/ly_requests?$filter=lvo_name eq 'CAS-07325-C2S8J3'&$expand=owninguser($select=fullname,domainname,internalemailaddress)

https://luoyongdemo.api.crm.dynamics.com/api/data/v9.1/ly_glrequests?$filter=lvo_name eq 'CAS-06852-C2K9Y0'&$expand=owningteam($select=name)

 

若要查詢用戶加入的團隊,擁有的角色,他/她的mailbox的狀態能夠參考

https://luoyongdemo.crm.dynamics.com/api/data/v9.1/systemusers(3a1eb63b-f546-ea11-a813-000d3a8c9f2b)?$select=domainname,fullname,isdisabled&$expand=teammembership_association($select=name,teamid,_businessunitid_value),systemuserroles_association($select=name,roleid,_businessunitid_value),mailbox_regarding_systemuser($select=incomingemailstatus,outgoingemailstatus)
相關文章
相關標籤/搜索