【问题标题】:BreezeJS - Using expandBreezeJS - 使用扩展
【发布时间】:2014-02-04 21:12:12
【问题描述】:

我正在查询服务器以获取扩展实体

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 的时候,扩展的实体会被添加到缓存中吗?

【问题讨论】:

  • 你延期的意义何在?为什么不简单地返回来自dataRepository.fetchEntitiesByQuery 的承诺?

标签: breeze


【解决方案1】:

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

查看第一个请求的响应的有效负载。相关实体是否存在?如果不是,则服务器上可能没有很好地接收到该查询。作为一般规则,您需要先确保数据通过网络传输,然后再怀疑 Breeze 是否对这些数据进行了正确处理。

我确实对扩展列表中项目的拼写感到疑惑。它们都在 PascalCase 中。它们是Incident 类型的导航属性的名称吗?还是它们是相关实体类型的名称?它们必须是前者(导航属性名称),而不是后者。

【讨论】:

    【解决方案2】:

    我的导航属性有问题 - 因为我没有使用 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
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-14
      • 1970-01-01
      • 2014-12-11
      • 1970-01-01
      相关资源
      最近更新 更多