我正在使用 VS2008 数据集连接到数据库。数据库中的一个表包含一个允许空值的日期时间列(即类型:日期时间?)
MSDN数据集明确指出:
DataSet 目前不支持 Nullable 或 Nullable 结构。
然而,在 TableAdapters 的 MSDN 站点上,TableAdaters可以支持 Nullable 类型:
TableAdapter 支持可为空的类型 Nullable(Of T) 和 T?。有关可空类型的更多信息...有关 C# 中可空类型的更多信息,请参阅使用可空类型(C# 编程指南)。
我很困惑!
在数据集设计器中,我已将违规列的属性设置为“AllowDBNull=True”,但每当我运行返回空 DateTime (SELECT * FROM UDF) 的 TableAdapter 查询时,我都会收到以下异常:“ArguementOutOfRangeException:年、月和日参数描述了一个不可表示的日期时间。”
我的一个想法是将 Column 的类型更改为 System.Object 以正确处理空值,然后我可以在自己的代码中进行转换,但是,我仍然会引发相同的异常。
This question建议一旦查询返回,如何处理空值,但是我无法让查询返回。
如何修改 TableAdapter 和/或 Dataset 以允许我在可以处理数据库中的空值的表上运行查询?