C# DbParameter是否为空功能?

C# DbParameter是否为空功能?,c#,.net,ado.net,sqlclient,sqlparameter,C#,.net,Ado.net,Sqlclient,Sqlparameter,我在ADO.Net中很少使用参数。我正在编写一个自定义的.Net数据提供程序(以SqlClient为模型),并且必须在参数类中实现IsNullable属性,它继承自DbParameter。我的数据提供程序不支持存储过程,因此我只支持输入(替换样式)参数 MSDN文档对IsNullable的功能相当不清楚,声明“获取或设置一个指示参数是否接受空值的值”。谷歌搜索发现很多人对IsNullable的功能感到困惑,说将IsNullable设置为false并不禁止他们使用空值的参数,正如他们所预料的那样

我在ADO.Net中很少使用参数。我正在编写一个自定义的.Net数据提供程序(以SqlClient为模型),并且必须在参数类中实现IsNullable属性,它继承自DbParameter。我的数据提供程序不支持存储过程,因此我只支持输入(替换样式)参数

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

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

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

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

为了避免为了了解SqlParameter的IsNullable实现是如何工作的而不得不修改一些测试代码,如果有使用参数编写代码的经验的人能够解释IsNullable,我将不胜感激。

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

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


支持此视图的将是的实现,其文档声明:

可为空 不支持此属性

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

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