gpt4 book ai didi

c# - DbParameter IsNullable 功能?

转载 作者:行者123 更新时间:2023-11-30 22:49:36 26 4
gpt4 key购买 nike

我没有在 ADO.Net 中使用太多参数。我正在编写自定义 .Net 数据提供程序(以 SqlClient 为模型),并且必须在我的参数类中实现 IsNullable 属性,该属性继承自 DbParameter。我的数据提供者不支持存储过程,所以我将只支持输入(替换样式)参数。

MSDN 文档对 IsNullable 的功能相当不清楚,指出“获取或设置一个值,该值指示参数是否接受空值。”谷歌搜索发现很多人对 IsNullable 的作用感到困惑,他们说将 IsNullable 设置为 false 并不禁止他们使用参数将是 null 值,正如他们所期望的那样。

基于此,我认为 IsNullable 属性可能与存储过程的使用有关,存储过程的参数是否可为空,而不是参数值是否可为空。

在那种情况下,因为我没有存储过程,所以我的实现可以是:

        public override bool IsNullable { get { return false; } set {} }

为了避免为了查看 SqlParameter 的 IsNullable 实现如何工作而不得不摆弄一些测试代码,如果有使用参数编写代码经验的人可以解释 IsNullable,我将不胜感激。

最佳答案

IsNullable 属性是信息性的。当代码的一部分创建参数而另一部分实际使用它时,这很有帮助。例如,参数可能自动从数据库派生,在这种情况下,程序员能够了解是否可能接受空值是有帮助的。

这是我对 IsNullable 属性的理解。我实际上不知道有任何文档可以“证明”这实际上是正确的。


支持此观点的是 Oracle Oracle.DataAccess.Client.OracleParameter class 的实现,他们的文档说明:

IsNullable

This property is not supported.

事实上,当通过 MS 驱动程序或引用的 Oracle 驱动程序与 Oracle 10、11 或 12 交互时,此属性的值无关紧要。

当然,在其他数据库上的行为可能会有所不同。

关于c# - DbParameter IsNullable 功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1075863/

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