扩展函数不能返回空值

时间:2017-04-06 18:04:54

标签: c# sql-server datetime biztalk biztalk-2013

我在biztalk地图中使用下面的脚本functoid将字符串转换为dateTime

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

但这是错误的说法

  

扩展函数不能返回空值。

如何处理这个问题。我将日期时间插入到MS SQL DB

1 个答案:

答案 0 :(得分:5)

这是已知的行为:Known issues in BizTalk Server 2013,其分辨率为“返回String.Empty或其他替代值以表示空方案”。

  

不支持返回null

     

症状
  从functoid返回null值时,映射失败,并且您收到以下一般错误消息...

     

在Visual Studio中测试相同的地图时,它会提供更具描述性的错误消息:
  调用的目标抛出了异常。扩展函数不能返回空值。

     

注意XslCompiledTransform类不支持从转换中调用的函数返回空值。

     

分辨率
  返回String.Empty或其他一些替代值来表示空方案。如果需要,可以使用全局变量使空值在多个函数中可用。