gpt4 book ai didi

c# - 以通用方式设置空值的 DbParameter.DbType?

转载 作者:行者123 更新时间:2023-11-30 18:03:38 26 4
gpt4 key购买 nike

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

如果我尝试写入一个二进制字段 ( varbinary(max) ),我得到一个异常,即 varcharvarbinary 之间的转换是不可能的。所以在那种情况下,我必须自己设置 DbType。我现在的问题是,如何从.Net 类型。我想成为这个通用的,所以我可以将我的方法与其他人一起使用数据库。我在 MSDN 文档中找不到任何有用的信息。如果有人能给我一些解决方法的提示,我将不胜感激这。或者也许我走错了路。我暂时不确定。

最佳答案

我能建议的最好的事情是使用通用方法来添加参数,即

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

那样的话,你可以查看typeof(T)即使valuenull .然后您需要打开 T 的类型并对关系进行硬编码。 switchType.GetTypeCode(...)让事情变得相当简单。

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

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com