考虑以下代码。从服务器获取数据时,它工作正常。我有一个自定义数据适配器(staffManagemetnService),它从服务器返回的json创建客户端实体。
但是,如果我调用executeQueryLocally,它会失败并引发以下异常:Cannot find an entityType for resourceName: 'GetInternalResourcesByCompetence'. Consider adding an 'EntityQuery.toType' call to your query or calling the MetadataStore.setEntityTypeForResourceName method to register an entityType for this resourceName
var query = breeze.EntityQuery.from('GetInternalResourcesByCompetence').withParameters(parameters);
var result = self.manager.executeQueryLocally(query.using(dataService.staffManagementService));
if (result) {
return $q.resolve(result);
} else {
return this.manager.executeQuery(query.using(dataService.staffManagementService))
.then(function (data) {
return data.results;
})
.catch(function (err) {
logError('Restrieving resources days off failed', err, true);
});
}
我不确定这意味着什么。它是否应该开箱即用,因为我特别要求微风使用自定义dataAdapter?
答案 0 :(得分:1)
资源名称和实体类型名称之间的区别很重要。资源名称通常是端点的一部分,也可以是复数(例如orders
)。类型名称通常是单数的(例如order
)。
本地微风对资源名称无能为力,因为它不会调用端点。相反,您要求某个实体类型名称。
您可以使用setEntityTypeForResourceName
函数将entityType映射到资源名称:
metadataStore.setEntityTypeForResourceName('Speakers', 'Person');
参见第34章;资源名称不是EntityType名称"以及后面的章节:http://www.getbreezenow.com/documentation/querying-locally