2

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

int value = row.CustomValue;

相反,我需要这样做:

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

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

int? value = row.CustomValue;

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

4

1 回答 1

1

不幸的是,这不受支持。

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

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

CustomValueSql实际的列名在哪里。

于 2010-05-03T14:37:38.947 回答