2011-01-10 5 views
3

OData:操作のドキュメントの2.4第4段落のセクションでは、POSTを使用してエンティティを作成するときに、同じリクエスト内のリンク。しかし、私はこの作業をしようとするのに問題があります。作成中の多対多のリンクについても同様の質問があり、バッチ要求なしではその特定のシナリオは不可能であるようです。以下は私がこのsample OData read write serviceを使って作成しようとしているシナリオです。ODataを使用した1回のPOST要求で1対1の関係を適切に作成してリンクする方法

「Test Product」という名前の新しい製品を作成し、JSONを使用して1つのPOSTでCategory(0)にリンクします。

私は失敗という結果に両...

POST /OData/OData.svc/Products HTTP/1.1
Accept: application/json
Content-Type: application/json

{ "ID": 99, "Name": "Test Product", "Description": "Simple Test", "ReleaseDate": "\/Date(1210204800000)\/", "DiscontinuedDate": null, "Rating": 3, "Price": "99.99", "Category":"http://services.odata.org/OData/OData.svc/Categories(0)" }

と...

POST /OData/OData.svc/Products HTTP/1.1
Accept: application/json
Content-Type: application/json

{ "ID": 99, "Name": "Test Product", "Description": "Simple Test", "ReleaseDate": "\/Date(1210204800000)\/", "DiscontinuedDate": null, "Rating": 3, "Price": "99.99", "Category": {"uri": "http://services.odata.org/OData/OData.svc/Categories(0)"} }

を試してみました。

原子の形式を使用して別の例...

<?xml version="1.0" encoding="utf-8"?> 
<entry xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom"> 
    <title type="text"/> 
    <updated>2010-02-27T21:36:47Z</updated> 
    <author> 
     <name/> 
    </author> 
    <Link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Category" type="application/atom+xml;type=Entry" title="Category" href="Categories(0)"/> 
    <category term="ODataDemo.Product" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/> 
    <content type="application/xml"> 
     <m:properties> 
      <d:ID m:type="Edm.Int32">99</d:ID> 
      <d:Name m:type="Edm.String">New Product</d:Name> 
      <d:ReleaseDate m:type="Edm.DateTime">1992-01-01T00:00:00</d:ReleaseDate> 
      <d:DiscontinuedDate m:type="Edm.DateTime" m:null="true"/> 
      <d:Rating m:type="Edm.Int32">4</d:Rating> 
      <d:Price m:type="Edm.Decimal">2.5</d:Price> 
     </m:properties> 
    </content> 
</entry> 

作成201で上記の結果、未だないアソシエーションは、既存のカテゴリにリンク新製品のために作成されます。

ご協力いただければ幸いです。前もって感謝します。

答えて

5

マイクロソフトのパブロ・カストロが私の質問に答えました。彼はAtomのペイロードで、大文字の "L"を小文字に変更するよう提案しました。 IE。

<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Category" type="application/atom+xml;type=entry" title="Category" href="Categories(0)"/> 

JSONペイロードの場合、機能するためには「__metadata」を含める必要があります。 IE。

{ 
Prop1: ..., 
Prop2: ..., 
LinkProp1: { __metadata: { uri: "http://..." } } 
} 
関連する問題