首页 > 解决方案 > 强类型数据集未在 Add 中生成 Nullable<> 类型参数行法?

问题描述

我已经使用 DataSets 很长时间了,从里到外地了解它们,甚至在我直接编辑 XML 以克服设计者在处理一些非主流数据库时的限制的情况下也没有问题,但我在这里寻找对某事的感觉检查..

我几乎可以肯定,在过去,当我将列数据类型设置为原始类型(如Int32, DateTimeGuid 并且还声明AllowDbNull=true)时,msdatasetgenerator 生成的代码生成了一个Add<tablename>Row()//int?在参数中DateTime?Guid?这样可以在内部传递 null ,数据集在写入数据库等时使用 DBNull.Value 等

我刚刚在 VS2017 pro 的设计器中生成了一些数据集,并且没有一个原始列AllowDBNull=trueAdd<tablename>Row()

目前我没有任何旧项目需要仔细检查;有谁知道数据集生成器的最新版本是否发生了任何变化,这些版本已经淘汰了 Add<tablename>Row方法上的可空参数工具?

编辑:这里,Table 可以为空 DateTime,但 DataSet 抛出异常?Rob Rossney 似乎在证实我的想法,他说:

特别糟糕,因为类型化数据集在某些地方确实使用了可为空的类型 - 例如,包含上述可为空的 DateTime 列的表的 AddRow() 方法将采用 DateTime?范围。

“不,你实际上要疯了,AddRow() 从来没有可以为空的。你正在考虑另一种方法 BlahBlah()”的答案很好。即使只是“它从来不支持这个,你是发疯”也很好。希望实际答案是“您忘记ABC在 DataColumn 上设置属性;正是这使得生成器生成可为空的参数,而不是AllowDbNull=true

请注意,我不是在询问将 DataColumn 的类型设置为例如 Nullable - 我知道这无法做到;但我确信,对于声明的可空原始列,生成的代码在某些地方曾经很有帮助,允许传递一个空值并在设计器生成的代码中与之争吵..")

标签: c#visual-studio-2017strongly-typed-dataset

解决方案


推荐阅读