3

js ライブラリー、breeze.js の調査を開始しました。私はサンプルを調べましたが、WCF データ サービスを使用する方法の例を見つけることができないようです (すべての例は Web API にあるようです)。

ブリーズ.jsでWCFデータサービス(または他のODataサービス)を利用する方法を知っている人はいますか?

現時点では、breeze.js は OData サービスの読み取りのみをサポートしているというドキュメントのどこかを読みました。私が検討しているユースケースには OData サービスへの書き込みが含まれていないため、これで問題ありません。

4

2 に答える 2

8

この回答で説明されている構成は、もはや正しくありません!

私は Breeze のエンジニアの 1 人です。

Breeze を使用して OData サービスと対話する最も簡単な方法は、まず OData と対話するように Breeze を構成することです。

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 の方が適していると感じた理由を教えてください。これが私たちが製品を改善する方法です。

ありがとう

于 2012-10-31T17:25:35.413 に答える
0

修正された OData 構成と例

ジェイの答えはかなり古くなっているようです。entityModelその答えに出てくるタイプの Breeze に痕跡は残っていないと思います。その回答からの次のスニペットは失敗します:

entityModel.remoteAccess_odata // does not work!

これを行う!

私が書いているように、標準の OData ソース (WCF OData サービスなど) と通信するように Breeze を構成するための推奨される方法は次のとおりです。

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.
});
于 2014-04-26T02:24:25.500 に答える