我已經寫了一堆通用的C#幫助函數作爲我的SQL查詢的基礎。所有的null
對象參數都被轉換爲DBNull.Value
。但是當目標列是varbinary
時,它告訴我string
類型與binary
不兼容,我必須轉換。爲什麼DBNull.Value需要適當的SqlDbType?
爲什麼我需要在C#中使用SqlDbType
a DBNull.Value
?是否有任何通用的方法來解決這個問題?
// works for nvarchar but throws for varbinary columns
// notice the lack of SqlDbType as I don't know it for a null object
var param1 = new SqlParameter();
param1.Name = "@Param1";
param1.Value = DBNull.Value;
這是一個空......它不需要任何類型。 SQL服務器知道null的類型。在SQL中,你說[Column] IS NULL
而不是[Column] IS TYPE NULL
。所以null是無類型的。目標列從查詢中解析而不是SqlDbType
。
我剛剛發現這個非常不直觀的(明確鍵入空值)。我想知道如果我失去了一些東西......
代碼是這樣的:
SqlCommand CreateCommand(string query, params object[] arguments) { ... }
// in here I walk the parameters and build the proper SqlParameter for them.
// this saves me from setting up the SqlParameters by hand.
PS:字符串=的NVarChar和二進制表示VARBINARY。認真... PPS:對EF或任何類似的東西不感興趣。
你的問題不太清楚。如何將字符串轉換爲與'DBNull.Value'相關的'binary'轉換?你能展示一些特定的代碼示例嗎? – 2015-03-25 11:45:25
'string'在哪裏輸入圖片?如果它是'DBNull',它不是'string'。還有更多這個故事...... – DonBoitnott 2015-03-25 11:46:10
另外,你可以顯示一些示例代碼,顯示你如何做到這一點?可能會提供一些有用的上下文 – 2015-03-25 11:47:24