.NET Framework中的类型化DataSet

时间:2013-10-09 15:53:53

标签: .net strongly-typed-dataset

我需要从数据库表中自动获取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,该方法不会引发异常。

1 个答案:

答案 0 :(得分:1)

在数据集设计器中,在(Empty)中选择(Throw Exception)而不是NullValue 领域。 enter image description here

如果要在代码中访问数据集,则需要在数据行上使用IsxxxNull方法:在此代码中,r是数据行,_DateOpened是Nullable(日期)

  If r.IsDateOpenedNull Then
        _DateOpened = Nothing
    Else
        _DateOpened = r.DateOpened
    End If