传递空值时,SQL更新语句出现问题
(或者更好的说DbNull值)到DbParameter对象。
当我将DbNull值传递给Value属性时,
DbParameter对象仍为STRING。

如果尝试写入二进制字段(varbinary(max)),则会出现异常,表明无法在varchar和varbinary之间进行转换。因此,在这种情况下,我必须自行设置DbType。我的问题是,现在如何从
.Net类型。我想成为通用的,所以我可以将我的方法与其他方法一起使用
数据库。我在MSDN文档中找不到有用的东西。
如果有人能给我一些解决方法的提示,我将不胜感激
这个。也许我走错了路。我现在不确定。

最佳答案

我可以建议的最好的方法是使用通用方法来添加参数,即

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


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

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

关于c# - 以通用方式设置Nb值的DbParameter.DbType吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7046829/

10-12 20:49