在性能优化应用程序中,我们使用批量实体加载,例如"查找列表"例如http://www.breezejs.com/documentation/lookup-lists。 查询如下所示:
entityQuery.from('SomeBreezeAction')
.using(manager)
.execute()
.then(function (res) {
var set1 = res.results[0].first;
var set2 = res.results[0].second;
}
远程工作得非常好。 Breeze正确理解两个实体的实体类型并基于元数据生成对象。在同一个应用程序中,我们使用本地Breeze查询进行客户端逻辑的Jasmine测试。但查询如下:
entityQuery.from('SomeBreezeAction')
.using(manager)
.executeLocally()
.then(function (res) {
var set1 = res.results[0].first;
var set2 = res.results[0].second;
}
失败并显示错误:错误:找不到resourceName的entityType:' SomeBreezeAction'。考虑添加一个' EntityQuery.toType'调用您的查询或调用MetadataStore.setEntityTypeForResourceName方法为此resourceName注册entityType。
这是合理的,因为我们在此查询中没有使用toType或setEntityTypeForResourceName。所以我的问题是可以使用toType或setEntityTypeForResourceName或其他类似的查询,在一个请求中返回多个实体类型? 如果它很重要,我们手动定义元数据,而不是直接EF或其他数据库连接。
答案 0 :(得分:1)
问题在于客户端不知道" SomeBreezeAction"手段。此操作的逻辑完全包含在服务器上。
你可以做的是创建你自己的函数,在本地执行相同的查询" SomeBreezeAction"在服务器上进行并将返回的结果组合成相同的形状'您的服务器端查询。只要您想要同一查询的本地版本,就可以调用此函数。