簡體   English   中英

以通用方式設置 null 值的 DbParameter.DbType?

[英]Set the DbParameter.DbType of a null value in a generic way?

當我將 null 值(或者更好的說法是 DbNull 值)傳遞給 DbParameter object 時,我遇到了 SQL 更新語句的問題。 當我將 DbNull 值傳遞給 Value 屬性時,DbParameter object 的 DbType 仍然是 STRING。

如果我嘗試寫入二進制字段( varbinary(max) ),我得到一個異常,即varcharvarbinary之間的轉換是不可能的。 所以在那種情況下,我必須自己設置 DbType。 我現在的問題是,如何從.Net 類型中獲取 DbType。 我想成為這個通用的,所以我可以將我的方法與其他數據庫一起使用。 我在 MSDN 文檔中找不到任何有用的東西。 如果有人能給我一些如何解決這個問題的提示,我將不勝感激。 或者,也許我走錯了路。 我暫時不確定。

我可以建議的最好的事情是使用通用方法來添加參數,即

... Foo<T>(T value, ...)

這樣,即使value null ,您也可以檢查typeof(T) 然后,您需要打開T的類型並對關系進行硬編碼。 Type.GetTypeCode(...)上的switch使事情變得相當容易。

另一種方法是將值作為類型化成員傳遞——例如,在 dapper 中,我們將參數作為包裝器 object(通常是匿名類型)傳遞——然后我們可以檢查MemberInfo中的類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM