Breeze.js与WCF数据服务

时间:2012-10-30 08:30:13

标签: single-page-application breeze

我刚开始探索js库,breeze.js。我查看了示例,但似乎无法找到有关如何使用WCF数据服务的任何示例(所有示例似乎都在Web API上)。

是否有人知道如何使用breeze.js使用WCF数据服务(或任何其他OData服务)?

我在文档中的某处读到breeze.js目前只支持对OData服务的读取。我很好,因为我正在考虑的用例不包括对OData服务的写入。

2 个答案:

答案 0 :(得分:8)

此答案中描述的配置不再正确!

我是Breeze的工程师之一。

使用Breeze与OData服务交谈的最简单方法是首先配置breeze与OData通信。

breeze.core.config.setProperties({
    // the OData provider
    remoteAccessImplementation: entityModel.remoteAccess_odata;
    // this is the Knockout provider but we also provide a Backbone provider
    //  and we have others on the way
    trackingImplementation: entityModel.entityTracking_ko,
});

然后初始化一个EntityManager并进行第一次查询。

var myServiceName = "http://localhost:9009/ODataService.svc";
var em = new breeze.entityModel.EntityManager( {serviceName: myServiceName });

var query = breeze.entityModel.EntityQuery.from("Customers")
    .where("CompanyName", "startsWith", "B")
    .orderBy("City");

em.executeQuery(query).then(function(data) {
   // process the results here.
});

您应该能够以这种方式使用任何OData服务。

http://www.breezejs.com/documentation/introduction的Breeze文档可以提供更多信息。

另外,请告诉我们是什么让你觉得JayData更合适。这就是我们改进产品的方式。

感谢

答案 1 :(得分:0)

更正了OData配置和示例

周杰伦的回答似乎已经过时了。我不相信任何痕迹仍然存在于该答案中出现的entityModel类型的Breeze中。该答案的以下片段将失败

entityModel.remoteAccess_odata // does not work!

这样做!

在我写的时候,建议配置Breeze以便它与标准OData源(例如WCF OData服务)对话的方式是

breeze.config.initializeAdapterInstance('dataService', 'OData', true);

杰伊的答案余额需要略微修正才能删除对entityModel的引用:

// specify the absolute URL to the WCF service address
var serviceName = "http://localhost:9009/ODataService.svc";

var em = new breeze.EntityManager(serviceName );

var query = breeze.EntityQuery.from("Customers")
    .where("CompanyName", "startsWith", "B")
    .orderBy("City");

em.executeQuery(query).then(function(data) {
   // process the data.results here.
});