2017-04-06 5 views
-1

ich die unten stehende Skripterstellungsfunktoid in der biztalk Karte bin mit der Zeichenfolge um Datums- und UhrzeitErweiterungsfunktionen können nicht NULL-Werte zurückgeben

public DateTime? ConvertOpenDate(string openDate) 
{ 
    DateTime oDate; 
    if (!DateTime.TryParseExact(openDate, "yyyy-MM-DD HH:mm:ss.fff", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out oDate)) 
    { 
     return null; 
    } 
    else 
    { 
     return oDate; 
    } 
} 

konvertiere Aber es wirft Fehler sagen

Erweiterungsfunktionen nicht zurückkehren können Nullwerte

Wie man damit umgeht. Ich füge die Datetime in MS SQL DB

+0

Ich kann Ihren Fehler nicht mit einem schnellen Test in LinqPad reproduzieren, aber Ihre Datumsformat-Zeichenfolge ist falsch. Verwenden Sie Kleinbuchstaben DD, nicht Großbuchstaben DD für einen 2-stelligen Tag des Monats: https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx#ddSpecifier –

+0

Hallo allerseits, das hat nichts mit Extension-Methoden zu tun. Es ist eine einfache Datumsumwandlung. –

+0

Lassen Sie Ihre Datetime-Funktion eine leere Zeichenfolge zurückgeben, wenn die Konvertierung fehlgeschlagen ist. Überprüfen Sie in Ihrer Map den Rückgabewert der Methode. Wenn es nicht leer ist, ordnen Sie das Datum/Uhrzeit-Feld zu, wenn es leer ist, senden Sie das Datumselement überhaupt nicht. –

Antwort

5

Dies ist bekannt Verhalten: Known issues in BizTalk Server 2013 mit Auflösung "Return String.Empty oder ein anderer alternativer Wert, um das Null-Szenario darzustellen".

null Rückkehr nicht

unterstützt wird

Symptom
Wenn Sie einen Nullwert von einer Funktoids zurückkehren, schlägt die Karte und Sie erhalten die folgende allgemeine Fehlermeldung ...

Wenn Sie den Test Die gleiche Map in Visual Studio bietet eine aussagekräftigere Fehlermeldung:
Ausnahme wurde durch das Ziel eines Aufrufs ausgelöst. Erweiterungsfunktionen können keine Nullwerte zurückgeben.

Hinweis Die XslCompiledTransform-Klasse unterstützt nicht die Rückgabe von Nullwerten aus Funktionen, die innerhalb der Transformation aufgerufen werden.

Auflösung
Geben Sie String.Empty oder einen anderen alternativen Wert zurück, um das Null-Szenario darzustellen. Verwenden Sie bei Bedarf eine globale Variable, um den Nullwert für mehrere Funktionen verfügbar zu machen.