我有客户端定义的元数据,如下所示:
helper.addTypeToStore(manager.metadataStore, {
name: 'PriorStudy',
dataProperties: {
priorStudyId: { type: breeze.DataType.Int32 },
priorStudyType: { max: 6 },
priorStudyPurpose: { max: 12 },
notes: { max: 250 }
}
});
helper.addTypeToStore(manager.metadataStore, {
name: 'Patient',
dataProperties: {
patientId: { type: breeze.DataType.Int32 },
firstName: { max: 25 },
lastName: { max: 25 },
},
navigationProperties: {
priorStudies: { entityTypeName: 'PriorStudy', fk: ['patientId'], hasMany: true}
}
})
来自服务器的我的JSON响应形如下:
{ FirstName: "Steve",
LastName: "Holt",
PatientId: 1,
PriorStudy: [
{
PriorStudyId: 1,
PriorStudyType: "BLAH",
PriorStudyPurpose: "Whatever",
PatientId: 1,
Notes: "la la la"
}
]
}
我正在测试像这样的实体的创建:
var query = breeze.EntityQuery.from('Patient/1').toType('Patient')
console.log(query);
manager.executeQuery(query).then(function (results) {
console.log(results);
})
.then(function () {
var ents = breeze.EntityQuery.from('PriorStudy').using(manager).executeLocally();
console.log(ents);
});
患者实体按预期创建,但无论我尝试什么,PriorStudy实体都是空的。我准备写一个JsonResultsAdapter。
我知道这听起来很像其他问题,但我已经对它持续了两天,并且不知道还有什么可以尝试。任何建议都将受到极大的赞赏。
编辑:链接到非工作代码 https://gist.github.com/dlmanning/c09fe225995bc7cb682b
答案 0 :(得分:0)
你在这里缺少一些东西。
1 - 您错误地重新定义了客户端元数据。您的' PriorStudy'的正确定义实体类型应如下所示。
name: 'PriorStudy',
dataProperties: {
priorStudyId: { type: breeze.DataType.Int32 },
patientId: { type: breeze.DataType.Int32 },
priorStudyType: { max: 6 },
priorStudyPurpose: { max: 12 },
notes: { max: 250 }
},
navigationProperties: {
patient: 'Patient',
}
注意' patientId'外键以及患者'标量导航属性。
然后是您患者的定义'实体类型可以如下所示。
name: 'Patient',
dataProperties: {
patientId: { type: breeze.DataType.Int32 },
firstName: { max: 25 },
lastName: { max: 25 },
},
navigationProperties: {
priorStudies: { entityTypeName: 'PriorStudy', hasMany: true }
}
请注意,您没有指定先前的研究fk'患者的财产'实体类型。
2 - 当您正确定义了元数据后,在查询中,您可以通过“展开”来查询您的患者。方法也带来了'PriorStudies'来自数据库。
var query = breeze.EntityQuery.from('Patient/1')
.toType('Patient')
.expand('priorStudies');
编辑1:
添加Plunkr
编辑2:
除了定义(和修复)客户端元数据之外,您还必须编写自己的自定义JsonResultsAdapter。在Breeze Samples页面上查找Edmunds和ESPN示例。 Breeze mapping json教程也可能会有所帮助。
这是我创建的gist,用于说明如何编写自定义jsonResultsAdapter
。寻找createJsonResultsAdapter
方法。
希望这有帮助。