设置DbParameter.null值的DbType

本文关键字:DbType 值的 null DbParameter 设置 | 更新日期: 2023-09-27 18:05:32

当我传递空值时,我遇到了SQL更新语句的问题(或者更好的说是DbNull值)到DbParameter对象。当我将DbNull值传递给value属性时DbParameter对象仍然是STRING.

如果我尝试写入二进制字段(varbinary(max)),我得到一个异常,varcharvarbinary之间的转换是不可能的。在这种情况下,我需要自己设置DbType。我现在的问题是,我如何从net类型。我想要这么通用,这样我就可以把我的方法用在其他数据库。我在MSDN文档中找不到任何有用的东西。如果有人能给我一些提示如何解决这个问题,我会很感激这一点。或许我走错路了。我现在还不确定。

设置DbParameter.null值的DbType

我建议最好使用泛型方法来添加参数,即

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

这样,即使valuenull,您也可以检查typeof(T)。然后,您需要打开T的类型并对关系进行硬编码。Type.GetTypeCode(...)上的switch使事情变得相当容易。

另一种方法是将值作为类型化成员传入—例如,在dapper中,我们将参数作为包装器对象传入(通常是匿名类型)—然后我们可以从MemberInfo s中检查类型。