2

例として Northwind データベースを使用すると、各 Customer には Orders のコレクションがあります。特定の顧客とそのすべての注文の間のすべての参照を 1 回のリクエストで削除したいと考えています。

(仕様に基づいて)これを実行できるように見えますDELETE http://services.odata.org/V4/Northwind/Northwind.svc/Customers('ANTON')/Ordersが、クライアントライブラリがこれをサポートしているかどうか疑問に思っています。

C# クライアント ライブラリには Microsoft.OData.Client、Java には Apache Olingo (v4)、JavaScript には BreezeJS を使用しています。これらのいずれかの例は非常に高く評価されます。

編集:エンティティ自体を実際に削除するのではなく、参照を削除するだけであることを明確にしました。

4

4 に答える 4

4

エンティティ自体ではなく参照を削除したいというこの質問に対する以前の説明を考えると、答えはノーのようです。やりたいことはできません。

OData 4 (リンク先の仕様) では、エンティティを直接アドレス指定するのではなく、 $ref を使用して参照を取得します。その結果、興味のあるリンクは次のとおりです。

http://services.odata.org/V4/Northwind/Northwind.svc/Customers('ANTON')/Orders/$ref

残念ながら、プロトコルが言うように、あなたが望むことはできません(文法の改善):

単一のエンティティ参照をアドレス指定するリソース パスを DELETE 要求で使用して、2 つのエンティティの関連付けを解除できます。コレクション内のエンティティ参照の 1 つを識別するシステム クエリ オプション $id が後に続く場合、参照のコレクションをアドレス指定するリソース パスを DELETE 要求で使用できます。

仕様の作成者は、実行したい操作をプロトコルから削除するために苦労しました。各参照を順番に削除する必要があります。1 つのプロトコル要求で参照のコレクション全体を削除することはできません。

于 2014-06-16T16:49:21.970 に答える
0

Customers('ANTON') と Orders の間の参照を削除しますか、それとも Customers('ANTON') の下の Orders エンティティを削除しますか?

後で必要になった場合、サービスはプロトコルに従ってこの種の削除を提供するべきではありません。

参照を削除したいだけの場合は、クライアントから「Customers('ANTON')」を「PATCH」してみてください。

于 2014-06-16T01:42:47.253 に答える