2017-04-06 24 views
-1
私はdateTimeに

拡張機能は、null値

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; 
    } 
} 

に文字列を変換するためのBizTalkマップ内の以下のスクリプトFunctoidを使用しています。しかし、それは

拡張機能を返すことができないというエラーがスローされ

を返すことはできません。ヌル値。

これを処理する方法。私はMS SQL DBにdatetimeを挿入しています

+0

私はLinqPadで簡単なテストを使用してエラーを再現することはできませんが、あなたの日付形式の文字列が間違っています。月の2桁の日のためにDDを大文字ではない、小文字のDDを使用します。https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx#ddSpecifier –

+0

こんにちはすべて、これは持っています拡張メソッドを使用することとは関係ありません。これは簡単な日付変換です。 –

+0

datetime関数で変換に失敗した場合は空文字列を返します。マップで、メソッドの戻り値を確認します。それが空でない場合は、datetime-fieldをマップします。空の場合は、date要素をまったく送信しないでください。 –

答えて

5

これは既知の動作です:解決法 "null文字列を表すString.Emptyまたはその他の代替値を返す"とKnown issues in BizTalk Server 2013。 nullを返す

あなたがFunctoidのからNULL値を返す

症状がサポートされていない、マップが失敗し、次の一般的なエラーメッセージを...受け取る

あなたがテスト

Visual Studioの同じマップを使用すると、よりわかりやすいエラーメッセージが表示されます。
呼び出しの対象によって例外がスローされました。拡張機能はNULL値を戻すことはできません。

はXslCompiledTransformではクラスは変換中に呼び出される関数からNULL値を返すサポートしていません。

解決方法
Return String.Nullシナリオを表すためにStringまたは他の代替値を返します。必要な場合は、グローバル変数を使用して、複数の関数間でNULL値を使用できるようにします。

関連する問題