在 Visual Studio 的 .xsd 设计器中设计数据表时,有一个属性指定当表遇到空值时要执行的操作:
问题是,如果 DataType
是 System.DateTime
,我无法返回 empty
或 nothing
.它总是抛出异常。
当我工作时,我可以执行以下操作:
If(row.IsDateLastRecallPrintedNull, DateTime.MinValue, row.DateLastRecallPrinted)
但是如果值是DbNull.Value
,我宁愿让它返回该值。
最佳答案
使用 IsDateLastRecallPrintedNull 不是一种解决方法,而是它的预期使用方式。如果您使用可为空的日期,则可以在代码中将其设置为空而不是 DateTime.MinValue。或者,您可以将数据集中的数据类型更改为 System.Object,然后可以在下拉列表中选择“(Nothing)”。请注意,您可以使用适合该数据类型的另一个值来覆盖属性中的 NullValue 条目,尽管如果您输入 DateTime.Minvalue 则不起作用 - 它会显示接受它,但随后会失败 - 但您可以将另一个神奇的数字,例如 01/01/1900。
这一切都是“设计使然”。*
使用数据绑定(bind)可以在很大程度上避开这个泥潭;如果您以编程方式从数据集中读取数据,那么 IsxxxNull 就是正确的选择。
*我怀疑这常常是微软主义,因为“我们没有在发货日期之前完成它”
关于vb.net - 不要对 XSD 生成的 DataTable 类的空日期抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20149824/