2015-09-22 28 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]; 
    }); 
)}; 
相关问题