Jag har fått en wsdl-fil från en kund och den visar att ett fält ska tillåta nullvärden. Testat att skicka String=Nothing? Så här kan man skicka Null via WS i ett dataset; Tack för era svar. null är "lite Microsoft"? Gäller det även null i en Oracle, DB2, eller MySQL-databas? ;-DSkicka null-värden via WS.
När jag skapar en proxyclass (med wsdl.exe) så blir det en parameter av typen string och det stämmer så långt. Men hur är det tänkt att jag ska kunna leverera ett nullvärde.
Deklarationen: <ss:element minOccurs="0" maxOccurs="1" name="objectID" type="ss:string" />
Om jag skickar ett null-värde tolkar serialiseringen om det till en tom sträng.
Skickar jag DBnull.Value får jag en exception eftersom den inte kan hämta ett värde vid serialisering.
Jag antar att XML:en som är ett resultat av att jag skickar ett nullvärde ser ut såhär:
<objectID></objectID>
Som bekant är det istället detta jag vill åt: <objectID />
Kort och gott: Hur skickar jag null via en WebService som jag implemeterar i Visual Studio?
//Mikael SandSv: Skicka null-värden via WS.
Borde bli att inget element skapas och att det tolkas som Nothing/null.
En String kan aldrig vara DbNull utan isf är den Nothing.
Eller gör ett eget typat dataset, kolla på NullValue propertyn.
Laborera med olika värden och kolla hur det blir i XML.Sv: Skicka null-värden via WS.
<xs:element name="MyDatetime" type="xs:dateTime" msprop:nullValue="0001-01-01T00:00:00.00" />
<xs:element name="MyInt" type="xs:int" msprop:nullValue="1" />
I fallet med int'en har vi i det fallet bestämt att det inte kan finnas några värden mindre än 0 så kommer det -1 så kommer det att tolkas av WS som null och i datasetet vi får så är värdet null. Men varför skall du leverara ett nullvärde? Är det inte bättre att alltid skicka något, dvs ej tillåta nullvärden? Antingen så finns det en tom sträng ("") eller en sträng som innehåller mer tecken...Sv: Skicka null-värden via WS.
Efter att ha talat med mottagaren av data samt "kollat runt lite", så rekommenderas att man inte använder null utan istället använder någon form av värde för att representerar null eftersom just null är lite Microsoft.
I det fall som jag tog upp så lät mottagaren tom sträng vara null-representationen.
//Mikael SandSv:Skicka null-värden via WS.