c# - 强类型数据集未在 Add 中生成 Nullable<> 类型参数行法?
问题描述
我已经使用 DataSets 很长时间了,从里到外地了解它们,甚至在我直接编辑 XML 以克服设计者在处理一些非主流数据库时的限制的情况下也没有问题,但我在这里寻找对某事的感觉检查..
我几乎可以肯定,在过去,当我将列数据类型设置为原始类型(如Int32
, DateTime
,Guid
并且还声明AllowDbNull=true
)时,msdatasetgenerator 生成的代码生成了一个Add<tablename>Row()
//int?
在参数中DateTime?
,Guid?
这样可以在内部传递 null ,数据集在写入数据库等时使用 DBNull.Value 等
我刚刚在 VS2017 pro 的设计器中生成了一些数据集,并且没有一个原始列AllowDBNull=true
在Add<tablename>Row()
目前我没有任何旧项目需要仔细检查;有谁知道数据集生成器的最新版本是否发生了任何变化,这些版本已经淘汰了 Add<tablename>Row
方法上的可空参数工具?
编辑:这里,Table 可以为空 DateTime,但 DataSet 抛出异常?Rob Rossney 似乎在证实我的想法,他说:
特别糟糕,因为类型化数据集在某些地方确实使用了可为空的类型 - 例如,包含上述可为空的 DateTime 列的表的 AddRow() 方法将采用 DateTime?范围。
(“不,你实际上要疯了,AddRow() 从来没有可以为空的。你正在考虑另一种方法 BlahBlah()”的答案很好。即使只是“它从来不支持这个,你是发疯”也很好。希望实际答案是“您忘记ABC
在 DataColumn 上设置属性;正是这使得生成器生成可为空的参数,而不是AllowDbNull=true
”
请注意,我不是在询问将 DataColumn 的类型设置为例如 Nullable - 我知道这无法做到;但我确信,对于声明的可空原始列,生成的代码在某些地方曾经很有帮助,允许传递一个空值并在设计器生成的代码中与之争吵..")
解决方案
推荐阅读
- c - 如何检索枚举类型变量中的元素?
- php - 如何使用 wordpress 数据库中的数据执行 IF/ELSE 语句?
- javascript - 在 Chrome 中覆盖 Cmd+Shift+[?
- javascript - 复选框被选中,即使我在外面点击
- python - 如何用python中其他csv文件的值替换csv的一个值?
- laravel - saveMany() 不存储数据
- android - 如何将安卓应用设置为设备所有者
- javascript - 如何使用 html 中的音频标签始终完美地发出声音?
- javascript - React redux 连接渲染优化
- typescript - 如何从另一个类中读取一个类的函数内的变量?