【发布时间】:2010-12-16 06:06:04
【问题描述】:
在我们的应用程序中,我想不出很多我们关心空字符串字段的情况。我们只是希望它们在大多数情况下显示为空字符串。
所以当使用内置的ADO.NET dataset/datatables时,报错:
从类型 DBNull 转换为类型 字符串无效
稍后在引用任何旧字符串数据时在应用程序中太常见了。
这是一个特殊的问题,因为它可以很容易地抓住我们(并且在测试中经常看不到)
我知道有多种解决方案:
1.在所有情况下检查 .IsXXXNull
但是:
这是一个乏味的额外几行 整个应用程序的代码
如果我们忘记检查,即使 100 次中的 1 次,我们也有 潜伏的潜在错误
2。在数据集设计器中,将字段的 NullValue 属性从默认的“Throw Exception”更改为“Empty”
但是:
我们必须识别和改变 每个表和每个字符串字段 我们添加到数据集设计器 (记住默认是“抛出 例外”)
如果我们在 100 次中有 1 次忘记更改,我们就有潜在的错误 潜伏
3.避免在基础数据中存储空值
但是:
我们必须识别和改变 每个表和每个字符串字段 我们添加到数据库中
我们并不总是有那种 控制基础数据
4.不要使用数据集设计器,将数据拉入我们自己的类对象中,在我们自己的代码中处理所有 DBNull 混乱
但是:
- 是的,我们这样做是为了我们的“专业” 表。但是数据集设计器是 很好,快速的方法来拉入一个选择列表 或查找表,我们只在其中真正 需要默认数据行为
5.使用 CSLA 等代码生成器或框架代替 DataSet
但是:
- 解决小问题的一大步...... SO 标记的 CSLA 上排名靠前的问题的第二个答案提到:“缺点是它有一点学习曲线。”
【问题讨论】:
-
关于 3. 我知道您并不总是可以控制它,但是您的内部字段怎么会成为问题?是否只是添加了没有关于为什么允许 null 以及与空字符串有什么区别的文档?
标签: winforms ado.net dataset strongly-typed-dataset