我刚开始探索js库,breeze.js。我查看了示例,但似乎无法找到有关如何使用WCF数据服务的任何示例(所有示例似乎都在Web API上)。
是否有人知道如何使用breeze.js使用WCF数据服务(或任何其他OData服务)?
我在文档中的某处读到breeze.js目前只支持对OData服务的读取。我很好,因为我正在考虑的用例不包括对OData服务的写入。
答案 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)
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.
});