2011-12-20 128 views
1

這是一個很好的做法,當我需要通過屬性傳遞DBNULL。使它們成爲可空類型。因爲我們需要將Null值傳遞給後端的變量。我們將它們設置爲Nullable.But這樣也可以使用Properties。將對象的屬性設置爲可爲空類型?

回答

2

在某些情況下,你真的沒有選擇。例如T-SQL bit數據類型(它是.NET中的一個類型BOOL);在T-SQL,也可以是NULL,0或1。所以,你必須將其設置爲可空類型,因爲這樣的:

public bool? MySqlBitField { get; set; } 

更新:我做這本書框架設計指南的快速參考( Cwalina,Abrams),來自Addison Wesley的Nullable類型及其用法。我已經粘貼了書中的一些文字。順便說一句,我會強烈推薦這本書作爲一個很好的一般參考。

從書:

使用可爲空來表示可能不存在(即,可選的值)值考慮。例如,當使用表示可選表列的屬性從數據庫返回強類型記錄時使用它。

除非以類似的方式使用引用類型,否則不要使用Nullable,這是因爲引用類型值可以爲null。

例如,您不會使用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); 
} 

AVOID使用Nullable來表示一般的三態值。只能用Nullable表示真正可選的布爾值:true,false和not available。如果您只想表示三種狀態(例如,是,不,取消),請考慮使用枚舉。

AVOID使用System.DBNull。優先選擇Nullable。

從巴勃羅·卡斯特羅

可空注意是一般較好的可選的數據庫值的表示。有一點需要考慮,雖然Nullable允許您表示空值的能力,但您不會獲得數據庫空操作語義。具體而言,您不會通過運算符和函數獲得空傳播。如果你非常關心傳播語義,可以考慮堅持DBNull。

相關問題