Dynamics CRM Odata 查询一个实体和一个相关实体——还有第二个实体和第三个实体之间的关系
Dynamics CRM Odata Query one entity and a related entity-- but also a relation between the 2nd entity and a 3rd
所以我有 3 个自定义实体...
Patient, PatientDiagnosis and Diagnosis
患者可以通过 PatientID 的 GUID 将多个 PatientDiagnosis 链接到患者。
PatientDiagnosis 记录与 Diagnosis 实体相关
我正在使用 JavaScript 查询 Dynamics CRM 2011 的 Web 服务。
我想获取一些患者信息和 patientDiagnosis 列表,但我还想在 Diagnosis 中存储一两个字段 table。
我可以轻松查询 Patient 和 PatientDiagnosis 实体...
但我无法弄清楚如何在同一查询中将 PatientDiagnosis 与 Diagnosis 的 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) 您可以使用 expand 参数(又名 $select=[stuff]&$expand=[stuff])- 看起来您在这个方面是正确的 OR
2) 您可以在第一个查询的成功回调中嵌套第二个查询
我更喜欢使用 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];
});
)};
所以我有 3 个自定义实体... Patient, PatientDiagnosis and Diagnosis
患者可以通过 PatientID 的 GUID 将多个 PatientDiagnosis 链接到患者。
PatientDiagnosis 记录与 Diagnosis 实体相关 我正在使用 JavaScript 查询 Dynamics CRM 2011 的 Web 服务。
我想获取一些患者信息和 patientDiagnosis 列表,但我还想在 Diagnosis 中存储一两个字段 table。
我可以轻松查询 Patient 和 PatientDiagnosis 实体... 但我无法弄清楚如何在同一查询中将 PatientDiagnosis 与 Diagnosis 的 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) 您可以使用 expand 参数(又名 $select=[stuff]&$expand=[stuff])- 看起来您在这个方面是正确的 OR
2) 您可以在第一个查询的成功回调中嵌套第二个查询
我更喜欢使用 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];
});
)};