2015-09-22 29 views
1

之間的關係,所以我有3個自定義實體... 患者,PatientDiagnosis和診斷Dynamics CRM中的OData查詢一個實體和相關entity--而且第二實體和第三

患者可以有多個PatientDiagnosis通過患者ID的GUID鏈接到患者。

的PatientDiagnosis記錄都涉及到 我使用JavaScript來查詢Web服務的動態CRM 2011年

我想獲得一些病人信息和patientDiagnosis列表中的診斷實體,但我也想一個或兩個字段存儲在診斷表中。

我可以很容易地查詢患者和患者診斷實體... 但我無法弄清楚如何在同一查詢中將PatientDiagnosis中的N:1關係與診斷關聯起來。

http://........../2011/OrganizationData.svc/new_participantSet(guid'{blah blah blah}')? 
$select=new_new_participant_new_participantdiagnosis/new_PrimaryDiagnosis 
,new_new_participant_new_participantdiagnosis/new_Active 
,new_ReferralSource 
,new_Location 
,<<<<new_diagnosis/ID>>>> //I'd like to include Diagnosis entity data too// 
&$expand=new_new_participant_new_participantdiagnosis 

回答

1

您可以通過2種方式來完成此操作。

1)你可以使用擴展參數(又名$選擇= [東東] & $擴大= [東東]) - 看起來你是在正確的軌道上這一個或

2)你可以嵌套第一次查詢的successcallback內的第二查詢

我喜歡用CRMRestKit簡化我的OData的電話,所以1會是這個樣子:

var filter = 'new_participantid eq guid\'' + id + '\''; 
var DiagnosisField, PatientDiagnosisField; 
CRMRestKit.ByExpandQuery('PatientDiagnosis',['new_ReferralSource','x/new_Active'], x, filter) <-- x is the exact relationship name 
.done(function(data){ 
    DiagnosisField = data.d.results[0].x.results[0].new_Active; 
    PatientDiagnosisField = data.d.results[0].new_ReferralSource; 
) 

和2應該是這樣的:

var DiagnosisField, PatientDiagnosisField; 
CRMRestKit.Retrieve('PatientDiagnosis',GUID,[PColumns]).done(function(data){ <--Patient Diagnosis Columns here 
    CRMRestKit.Retrieve(['Diagnosis',data.d.DiagnosisLookup.Id,[DColumns]]).done(function(data2){ <-- Diagnosis columns here 
     PatientDiagnosisField = data.d.[field from patient diagnosis]; 
     DiagnosisField = data2.d.[field from diagnosis]; 
    }); 
)}; 
相關問題