2012-03-01 4 views
0

WCF Oracleアダプタを使用してOracleテーブルにデータを挿入しようとしています。テーブルにはDateTimeフィールドがあります。識別フィールドを使用してオーケストレーションでフィールドの値を設定した後、WCF Oracleアダプタを使用するように構成された送信ポートにメッセージを送信します。BizTalk WCF Oracleアダプタ:DateTime値の送信

メッセージがOracleに送信されたとき、これは私に次のエラーを与える:フィールドの

値が無効です。 DateTime.KindはDateTimeKind.Unspecifiedでなければなりません。 DateTime値にTimeZoneまたはTimeZoneOffsetが含まれていないことを確認します。

私は未指定であることをDateTimeKindを強制的にこれを使用してみました:

msg.ProcessedDateTime = System.DateTime.SpecifyKind(
    System.DateTime.Now.ToLocalTime(), 
    System.DateTimeKind.Unspecified); 

が、私はまだ同じエラーメッセージが表示されます。

私はまた、日付の次の形式を使用してXMLがこのメッセージのために生成されたことがわかります:YYYY-MM-DD T HH:MM:ss.ffffffZ

問題はの終わりにZであると思われます(GMT + 0)

スキーマでフィールドをxs:と定義するため、「ProcessedDateTime」プロパティに任意の文字列(制御可能な形式)を割り当てることはできません。オーケストレーションでは、System.DateTime値を使用する必要があります。

にはどのようにSystem.DateTime表現を強制できますか?にはタイムゾーン情報が含まれていませんか? DateTimeは私のコードではなく、BizTalkによって文字列に変換されるので、直接表現を制御することはできません。

答えて

0

解決策私が見つけた回避策は、Oracleによって予期される形式でdatetimeを再フォーマットする送信ポートにマップ/ xslt /パイプラインを持つことでした。したがって、オーケストレーションは引き続き日付をタイムゾーンとともに書き込みますが、Oracleに送信される前に削除されます。

関連する問題