当我需要通过属性传递DBnull时,这是一个很好的做法。使它们成为可空类型。因为当我们需要通过我们的Variables将Null值传递给Backend时。我们将它们设为Nullable.But is this okay With Properties。
答案 0 :(得分:2)
在某些情况下,你真的别无选择。例如,T-SQL bit
数据类型(.NET中的类型BOOL
);在T-SQL中,它可以是NULL,0或1.因此,您必须将其设置为NULLABLE类型,如下所示:
public bool? MySqlBitField { get; set; }
更新:我快速参考了来自Addison Wesley的Nullable类型的框架设计指南(Cwalina,Abrams)及其用法。我已经粘贴了书中的一些文字。顺便说一句,我强烈推荐这本书作为一个很好的一般参考。
来自书:
使用Nullable表示可能不存在的值的CONSIDER(即可选值)。例如,在使用表示可选表列的属性从数据库返回强类型记录时使用它。
除非你以类似的方式使用引用类型,否则不要使用Nullable,利用引用类型值可以为空的事实。
例如,您不会使用null来表示可选参数。
// bad design
public class Foo {
public Foo(string name, int? id);
}
// good design
public class Foo {
public Foo(string name, int id);
public Foo(string name);
}
使用Nullable避免表示一般的三态值。 Nullable只应用于表示真正可选的布尔值:true,false和not available。如果您只想表示三种状态(例如,是,否,取消),请考虑使用枚举。
使用System.DBNull进行避免。更喜欢Nullable。
Pablo Castro的注释
Nullable通常是可选数据库值的更好表示。但要考虑的一件事是,虽然Nullable使您能够表示空值,但您不会获得数据库空操作语义。具体来说,您不会通过运算符和函数获得空传播。如果您非常关心传播语义,请考虑坚持使用DBNull。