如果我有一个强类型的数据表,其中的列用于类型的值 Int32 ,并且此列允许空值,那么如果对值为空的行执行此操作,我将得到一个异常:
Int32
int value = row.CustomValue;
相反,我需要这样做:
if (!row.IsCustomValueNull()) { int value = row.CustomValue; // do something with this value }
理想情况下,我希望能够做到:
int? value = row.CustomValue;
当然,我可以写自己的方法,比如 GetCustomValueOrNull ;但是,如果自动为列本身生成的属性只返回一个可以为空的值,则更可取。这有可能吗?
GetCustomValueOrNull
不幸的是,这是不支持的。
但是,您可以创建自己的包装器属性,如下所示:
public int? CustomValue { get { return IsCustomValueqlNull() ? new int?() : CustomValueSql; } set { if (value == null) SetCustomValueSqlNull(); else CustomValueSql = value.Value; } }
在哪里? CustomValueSql 是实际的列名称。
CustomValueSql