[英]What is the value of DbParameter.Size if DbParameter.DbType is Binary?
[英]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) ),我得到一個異常,即varchar和varbinary之間的轉換是不可能的。 所以在那種情況下,我必須自己設置 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.