我正在查询服务器以获取一个带有扩展的实体
function _loadIncidents() {
var deffered = Q.defer(),
queryObj = new breeze.EntityQuery().from('Incidents').expand(['Deployments', 'IncidentComments', 'DTasks', 'ExtendedProperties', 'IncidentEvents']);
dataRepository.fetchEntitiesByQuery(queryObj, true).then(function (incidents) {
var query = breeze.EntityQuery.from("DTasks"),
incidentIds = dataRepository.getEntitiesByQuerySync(query);
deffered.resolve();
}, function(err) {
deffered.reject(err);
});
return deffered.promise;
};我得到了结果,一切都很好,但是当我查询微风缓存来获得实体时-我得到的是空集合。那么,当使用expand时,展开的实体会被添加到缓存中吗?
发布于 2014-02-04 13:51:11
是,扩展中标识的相关实体应在缓存中...如果查询是“正确的”,并且服务器按照您的意图解释了您的请求。
查看来自第一个请求的响应的有效负载。相关实体是否存在?如果不是,则可能是该查询在服务器上没有得到很好的接收。一般来说,在怀疑Breeze是否对这些数据做了正确的处理之前,您需要确保数据是通过网络传输的。
我发现自己对你的展开列表中项目的拼写感到疑惑。它们都在PascalCase中。它们是Incident类型的导航属性的名称吗?或者它们是相关EntityTypes的名称?它们需要是前者(导航属性名称),而不是后者。
发布于 2014-02-04 21:12:13
我遇到了导航属性的问题--因为我没有使用OData webapi,没有使用EF,所以导航属性有问题,所以目前我只是写了
Object.defineProperty(this, 'Deployments', {
get: function () {
return (this.entityAspect && this.entityAspect.entityManager) ?
this.entityAspect.entityManager.executeQueryLocally(new breeze.EntityQuery("Deployments").
where('IncidentID', 'eq', this.IncidentID)) :
[];
},
set: function (value) { //used only when loading incidents from the server
if (!value.results) {
return;
}
var i = 0,
dataRepository = require('sharedServices/dataRepository');
for (i; i < value.results.length; i++) {
dataRepository.addUnchangedEntity('Deployment', value.results[i]);
}
},
enumerable: true
});https://stackoverflow.com/questions/21538105
复制相似问题