breeze似乎每次查询都会加载元数据

时间:2013-04-16 20:09:57

标签: breeze

考虑下面的代码片段... 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);
            });

1 个答案:

答案 0 :(得分:2)

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

我猜你正在猜测的是,两个查询都会在返回元数据之前启动。这将导致多次获取元数据。但是,一旦它确实失效,你不应该再看到任何进一步的请求。

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

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

    manager.executeQuery(query2);
  }