我需要从数据库表中自动获取DataSet,我使用内部Visual Studio工具,并且在创建的数百万行之间,这是一个访问器方法:
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
public string Referente {
get {
try {
return ((string)(this[this.tableCATALOGO_Cliente.ReferenteColumn]));
}
catch (global::System.InvalidCastException e) {
throw new global::System.Data.StrongTypingException("The value for column \'Referente\' in table \'CATALOGO_Cliente\' is DBNull.", e);
}
}
set {
this[this.tableCATALOGO_Cliente.ReferenteColumn] = value;
}
}
如您所见,此代码引用了Referente
列。当我需要获得通用Referente
if NULL
时,return
无法发生导致异常被抛弃。
我用以下方法解决了将return语句替换为
return this[this.tableCATALOGO_Cliente.ReferenteColumn] as string;
由于该表包含数百列,因此我可以自动执行此过程(即,如果发生DataSet
,我将生成带有访问器方法的IS NULL
,该方法不会引发异常。
答案 0 :(得分:1)
在数据集设计器中,在(Empty)
中选择(Throw Exception)
而不是NullValue
领域。
如果要在代码中访问数据集,则需要在数据行上使用IsxxxNull方法:在此代码中,r是数据行,_DateOpened是Nullable(日期)
If r.IsDateOpenedNull Then
_DateOpened = Nothing
Else
_DateOpened = r.DateOpened
End If