I’ve got a problem with SQL update statements when I pass null values
(or better let’s say DbNull values) to a DbParameter object.
When I pass the DbNull value to the Value property, the DbType of the
DbParameter object is still STRING.
If I try to write into a binary field ( varbinary(max) ), I got an exception that the conversion between varchar and varbinary is not possible. So in that case I have to set the DbType by my own. My question is now, how do I get the DbType from an
.Net type. I want to be this generic, so I can use my methods with other
databases. I couldn’t find anything usefull in the MSDN documentation.
If someone can get me some hints how to solve this, I would appreciate
this. Or maybe I’m on the wrong path. I’m not sure for the moment.
The best thing I can suggest there is to use a generic method to add the parameter, i.e.
That way, you can check
typeof(T)even ifvalueisnull. You would then need to switch on the type ofTand hard-code the relationship. AswitchonType.GetTypeCode(...)makes things fairly easy.Another approach is to pass the values in as typed members – for example, in dapper we pass the parameters in as a wrapper object (typically an anonymous type) – then we can inspect the types from the
MemberInfos.