我正在查询服务器以获取具有展开的实体
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;
};
我得到了结果,一切都很好,当我查询breeze缓存以获取实体时 - 我得到空集合。那么当使用expand时,扩展的实体会被添加到缓存中吗?
答案 0 :(得分:0)
是的,扩展中标识的相关实体应该在缓存中...如果查询是“正确的”并且服务器按您的意图解释您的请求。
查看第一个请求的响应的有效负载。相关实体是否存在?如果没有,可能在服务器上没有很好地收到查询。作为一般规则,在想知道Breeze是否使用这些数据做正确的事情之前,您需要确保数据是通过网络传输的。
我确实发现自己想知道扩展列表中项目的拼写。他们都在PascalCase。它们是Incident
类型的导航属性的名称吗?或者它们是相关EntityTypes的名称?它们需要是前者(导航属性名称),而不是后者。
答案 1 :(得分:0)
我的导航属性有问题 - 因为我没有使用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
});