2

考虑下面的代码片段... WebApi 控制器元数据方法在下面的 executeQuery 中被调用两次... 为什么?

谢谢,特拉维斯

 var manager = (typeof options.breezeController !== 'undefined') ? options.breezeController : Mosaic.Global.defaultBreezeManager();

        var query = breeze.EntityQuery
            .from("GetColonies")
            //.select("VIVLINE_GUID, VIVLINE_NAME") 
            .orderBy("VIVLINE_NAME");

        manager.executeQuery(query);

        manager.executeQuery(query)
            .then((data) => {
                this.viewModel.items.removeAll;
                this.prepData(data.results);
                this.viewModel.setSelectedValue(selectedModel);
            });
4

1 回答 1

2

Breeze 在每次查询之前检查客户端上是否存在给定服务的元数据。如果元数据不存在,那么它将在执行查询之前要求它。

我猜你的情况是两个查询都在返回元数据之前开始。这将导致多次获取元数据。但是,一旦它成功了,您就不应该看到任何进一步的请求。

一个建议是在任何查询之前强制加载元数据,即

  manager.fetchMetadata().then(function() {
    manager.executeQuery(query1);

    manager.executeQuery(query2);
  }
于 2013-04-16T21:49:54.967 回答