我使用带有breeze.metadata-helper 1.0.7和BreezeJS 1.4.16的样板来实现自定义元数据方案的以下实现:
function addFoo() {
addType({
shortName: 'Foo',
dataProperties: {
Id: { type: ID },
BarId: { type: ID }
},
navigationProperties: {
Bar: {
entityTypeName: 'Bar',
associationName: 'Foo_Bar',
foreignKeyNames: ['BarId']
}
}
});
}
function addBar() {
addType({
shortName: 'Bar',
dataProperties: {
Id: { type: ID },
}
});
}
完成查询(在下面提供)执行后,我收到以下错误: TypeError:newValue.getProperty不是函数。
var query = breeze.EntityQuery.from('Foos').expand('Bar');
manager.execute(query).catch(function(error) { });
HTTP响应包含以下JSON:
[{"Id":1,"BarId":2,"Bar":{"Id":2}}]
虽然如果我用 invForeignKeyNames替换 foreignKeyNames:[&#39; BarId&#39;] ,此查询可以正常工作:[&#39; Id&#39;] 。而且,在后一种情况下, foo 实体的导航属性 Bar()不是实体类型 Bar ,而是一个简单的javascript对象。< / p>
问题是:
1)为什么 foreignKeyNames 的查询失败
2)为什么foo.Bar()不是Bar
类型的实体感谢。
答案 0 :(得分:1)
我认为问题在于您如何序列化查询结果。查看JsonResultsAdapter文档,其中讨论了如何处理json有效内容中的引用。您可能需要一个自定义的JsonResultsAdapter(一旦理解了这个想法就很容易编写)。