设置DbParameter.null值的DbType
本文关键字:DbType 值的 null DbParameter 设置 | 更新日期: 2023-09-27 18:05:32
当我传递空值时,我遇到了SQL更新语句的问题(或者更好的说是DbNull值)到DbParameter对象。当我将DbNull值传递给value属性时DbParameter对象仍然是STRING.
如果我尝试写入二进制字段(varbinary(max)),我得到一个异常,varchar和varbinary之间的转换是不可能的。在这种情况下,我需要自己设置DbType。我现在的问题是,我如何从net类型。我想要这么通用,这样我就可以把我的方法用在其他数据库。我在MSDN文档中找不到任何有用的东西。如果有人能给我一些提示如何解决这个问题,我会很感激这一点。或许我走错路了。我现在还不确定。
我建议最好使用泛型方法来添加参数,即
... Foo<T>(T value, ...)
这样,即使value
是null
,您也可以检查typeof(T)
。然后,您需要打开T
的类型并对关系进行硬编码。Type.GetTypeCode(...)
上的switch
使事情变得相当容易。
另一种方法是将值作为类型化成员传入—例如,在dapper中,我们将参数作为包装器对象传入(通常是匿名类型)—然后我们可以从MemberInfo
s中检查类型。