代码之家  ›  专栏  ›  技术社区  ›  Dan Tao

我可以将强类型数据集配置为使用可以为空的值吗?

  •  2
  • Dan Tao  · 技术社区  · 15 年前

    如果我有一个强类型的数据表,其中的列用于类型的值 Int32 ,并且此列允许空值,那么如果对值为空的行执行此操作,我将得到一个异常:

    int value = row.CustomValue;
    

    相反,我需要这样做:

    if (!row.IsCustomValueNull()) {
        int value = row.CustomValue;
        // do something with this value
    }
    

    理想情况下,我希望能够做到:

    int? value = row.CustomValue;
    

    当然,我可以写自己的方法,比如 GetCustomValueOrNull ;但是,如果自动为列本身生成的属性只返回一个可以为空的值,则更可取。这有可能吗?

    1 回复  |  直到 15 年前
        1
  •  1
  •   SLaks    15 年前

    不幸的是,这是不支持的。

    但是,您可以创建自己的包装器属性,如下所示:

        public int? CustomValue {
            get { return IsCustomValueqlNull() ? new int?() : CustomValueSql; }
            set {
                if (value == null)
                    SetCustomValueSqlNull();
                else
                    CustomValueSql = value.Value;
            }
        }
    

    在哪里? CustomValueSql 是实际的列名称。