2012-04-03 10 views
0

Ich habe eine Stapelanforderung, um Daten zu aktualisieren. Daten sind:OData-Referenzierungsanforderungen in einem Änderungssatz

Item : { 
id : int, 
name : string,  
RefItem : { 
    int : id, 
    name : string } 
} 

Ich brauche

  1. Artikel
  2. aktualisieren RefItem Referenz für diesen neu geschaffenen Artikel, in der gleichen Charge erstellen. (Es sei RefItems (1) existiert bereits in Datensatz)

Nach OData spec:

--batch_1872-f36a-7ce8

Content-Type: multipart/mixed; boundary=changeset_8c16-9ba3-2260

--changeset_8c16-9ba3-2260

Content-Type: application/http

Content-Transfer-Encoding: binary

PUT $1/$links/ItemRef HTTP/1.1

Content-ID: 2

Accept: application/atomsvc+xml;q=0.8, application/json;q=0.5, /;q=0.1

DataServiceVersion: 1.0

Content-Type: application/json

{"uri":"ItemRefs(1)"}

--changeset_8c16-9ba3-2260

Content-Type: application/http

Content-Transfer-Encoding: binary

POST Products HTTP/1.1

Content-ID: 1

Accept: application/atomsvc+xml;q=0.8, application/json;q=0.5, /;q=0.1

DataServiceVersion: 1.0

Content-Type: application/json

{"id":-1,"name":"seven"}

--changeset_8c16-9ba3-2260--

--batch_1872-f36a-7ce8--

Ich nehme es sollte funktionieren, aber ich habe antwort:

--batchresponse_4febeba8-dd43-4040-9fdb-866afde5304e Content-Type: multipart/mixed; boundary=changesetresponse_424dbf12-fa9a-4a59-8284-963fa0fa7b77

--changesetresponse_424dbf12-fa9a-4a59-8284-963fa0fa7b77 Content-Type: application/http Content-Transfer-Encoding: binary

HTTP/1.1 500 Internal Server Error Content-ID: 2 X-Content-Type-Options: nosniff DataServiceVersion: 1.0; Content-Type: application/json;charset=utf-8

{"d":{"error":{"code":"","message":{"lang":"ru-RU","value":"An error occurred while processing this request."}}}} --changesetresponse_424dbf12-fa9a-4a59-...

Kann mir jemand sagen, wo ich falsch liege? Danke.

Antwort

0

Die Stapelanforderung wird als Stream verarbeitet. Sie können also nur auf die bereits angezeigte Content-ID verweisen. Das obige Beispiel bezieht sich auf die Inhalts-ID 1 vor der Anforderungsoperation mit dieser Inhalts-ID. Das ist nicht gültig.

Sie müssen zuerst die neue Instanz (POST) erstellen und dann über die URL $ links eine Referenz hinzufügen.

Verwandte Themen