所以我有3个自定义实体...... 患者,患者诊断和诊断
患者可以通过患者ID的GUID将多个PatientDiagnosis与患者相关联。
PatientDiagnosis记录与诊断实体相关 我正在使用JavaScript查询Dynamics CRM 2011的Web服务。
我想获得一些患者信息和患者诊断列表,但我还想在诊断表中存储一两个字段。
我可以轻松查询Patient和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
答案 0 :(得分:1)
您可以通过两种方式完成此操作。
1)你可以使用扩展参数(又名$ select = [stuff]&amp; $ expand = [stuff]) - 看起来你在这个轨道的正确轨道上
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];
});
)};