Fehler? in OData PUT Methode

5. Juli 2016 13:24

Hallo zusammen,

bei der implementation von Webinterfaces mit OData in 2015CU6 ist mir aufgefallen, dass die PUT Methode nicht so arbeitet wie erwartet.
Darauf hin habe ich mir ein 2016CU8 installiert, da ja in der Zeit einiges an dem OData interface geändert wurde. Der Fehler? ist allerdings immernoch vorhanden.

Laut dem Blog:
https://blogs.msdn.microsoft.com/leohu/2013/10/04/odata-and-json-payload-examples/

Services MAY additionally support PUT, but should be aware of the potential for data-loss in round-tripping properties that the client may not know about in advance, such as open or added properties, or properties not specified in metadata. Services that support PUT MUST replace all values of structural properties with those specified in the request body



Ausgangssituation:
Ich hab die Standardpage 5401 als Webservice 'Variants' veröffentlicht
http://localhost:6002/DynamicsNAV90/OData/Company('CRONUS%20AG')/Variants(Code='LS-10PC-B',Item_No='LS-10PC')


Als Request sende ich:
{
Item_No: "LS-10PC",
Code: "LS-10PC-B",
Description: "Schwarz",
Description_2: ""
}


und würde anschließend folgendes erwarten
Code | Beschreibung | Artikelnr. | Beschreibung 2
LS-10PC-B | Schwarz | LS-10PC |


was aber bei raus kommt ist:
Code | Beschreibung | Artikelnr. | Beschreibung 2
LS-10PC-B | | LS-10PC |


Viel lustiger wird das ganze noch wenn ich folgenden Request sende
{
Item_No: "LS-10PC",
Code: "LS-10PC-B",
Description: "Schwarz",
Description_2: "foobar"
}


Code | Beschreibung | Artikelnr. | Beschreibung 2
LS-10PC-B | | LS-10PC | foobar

sende ich den gleichen Request noch einmal ab kommt folgendes heraus:
Code | Beschreibung | Artikelnr. | Beschreibung 2
LS-10PC-B | Schwarz | LS-10PC |


Versteh ich die Put Methode einfach nur falsch?


Mit Patch und Post funktioniert alles wie erwartet.

Grüße
Ted