[Tips]Null轉DBNull.Value

[Tips]Null轉DBNull.Value

不管是在ADO.NET或Spring.Net的Adotemplate底下,
通常在處理SQL的部分,都會使用parameter的方式,來避免SQL injection。

而使用parameter時,通常都會有下面類似的動作,將某個值assign給parameter:


objParameters.Add("PERS_AMT", DbType.Decimal).Value =  MyDTO.PersAmt ?? DBNull.Value

而當一堆parameter,可能是int, decimal或datetime,
新增動作時,若物件屬性為Null,應該要assign DBNull.Value給Parameter。

因為MyDTO.PersAmt ?? DBNull.Value這樣的動作會增加程式的複雜度,但事實上是單純不過的事。
為了避免這種處理,引起不必要的複雜度誤會,所以撰寫了個小小的extension method來處理這樣的事情。


        {
            return originalObject ?? DBNull.Value;
        }

在每一個object,都可以使用NullToDBNullValue這個method,
若該object為Null,則return DBNull.Value。
如此一來,不管是int, decimal, double, datetime等型別,都可以使用同一個method來做同一件事。
使用方法就會變成這樣:

簡單講,這個Extension method,就只是把 任何型別當Null的時候,要以DBNull.Value來取代
未來也可以設計成多丟一個參數進來,當為Null時,要回傳該參數。


或許您會對下列培訓課程感興趣:

  1. 2019/12/21(六)~2019/12/22(日):演化式設計:測試驅動開發與持續重構 第七梯次(台北)
  2. 2020/1/4(六)~2020/1/5(日):Clean Coder:DI 與 AOP 進階實戰 第三梯次(台北)
  3. 2020/02/08(六):【針對遺留代碼加入單元測試的藝術】 第八梯次(台北)
  4. 2020/02/09(日):【極速開發+】 第九梯次(台北)
  5. 2020/02/28(五)~2020/3/1(日) C#進階設計-從重構學會高易用性與高彈性API設計 第三梯次(台北)

想收到第一手公開培訓課程資訊,或想詢問企業內訓、顧問、教練、諮詢服務的,請洽 Facebook 粉絲專頁:91敏捷開發之路