BreezeJS-使用扩展

BreezeJS-使用扩展,breeze,Breeze,我正在查询服务器以获取具有expand的实体 function _loadIncidents() { var deffered = Q.defer(), queryObj = new breeze.EntityQuery().from('Incidents').expand(['Deployments', 'IncidentComments', 'DTasks', 'ExtendedProperties', 'IncidentEvents']); dataRep

我正在查询服务器以获取具有expand的实体

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缓存以获取实体时,我得到的是空集合。因此,当使用扩展时,是否将扩展的实体添加到缓存中?

是,扩展中标识的相关实体应在缓存中。。。如果查询是“正确的”,并且服务器按照您的预期解释了您的请求

查看来自第一个请求的响应的有效负载。相关实体是否在场?如果不是,则可能查询在服务器上没有得到很好的接收。作为一般规则,您需要确保数据通过电线传输,然后再考虑Breeze是否使用这些数据做了正确的事情


我确实发现自己对您的扩展列表中的项目的拼写感到疑惑。他们都在帕斯卡斯。它们是
事件
类型的导航属性的名称吗?或者它们是相关实体类型的名称?它们必须是前者(nav属性名称),而不是后者。

我对导航属性有问题-因为我没有使用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
    });
Object.defineProperty(这是“部署”{
get:function(){
返回(this.entityAspect&&this.entityAspect.entityManager)?
this.entityAspect.entityManager.ExecuteQueryLocal(new breeze.EntityQuery(“部署”)。
其中('IncidentID','eq',this.IncidentID)):
[];
},
set:函数(值){//仅在从服务器加载事件时使用
如果(!value.results){
返回;
}
var i=0,
dataRepository=require('sharedServices/dataRepository');
对于(i;i
您的延期付款有什么意义?为什么不直接从
dataRepository.fetchentiesbyquery
返回承诺呢?