Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何将DBNull作为值包含在强类型数据集中?_.net_Strongly Typed Dataset_Dbnull - Fatal编程技术网

.net 如何将DBNull作为值包含在强类型数据集中?

.net 如何将DBNull作为值包含在强类型数据集中?,.net,strongly-typed-dataset,dbnull,.net,Strongly Typed Dataset,Dbnull,我在.NET应用程序中创建了一个强类型数据集(MyDataSet)。为了简单起见,我们将说它有一个DataTable(MyDataTable),一个列(mycl)。 mycl的DataType属性设置为“System.Int32”,AllowDBNull属性设置为“true” 我想手动创建一个新行,并将其添加到此数据集。我创建行时没有任何问题,如下所示: MyDataSet.MyDataTableRow myRow = MySimpleDataSet.MyDataTable.NewItemRow

我在.NET应用程序中创建了一个强类型数据集(MyDataSet)。为了简单起见,我们将说它有一个DataTable(MyDataTable),一个列(mycl)。 mycl的DataType属性设置为“System.Int32”,AllowDBNull属性设置为“true”

我想手动创建一个新行,并将其添加到此数据集。我创建行时没有任何问题,如下所示:

MyDataSet.MyDataTableRow myRow = MySimpleDataSet.MyDataTable.NewItemRow();
好的。但是,当我尝试将值设置为DBNull时:

myRow.MyCol = DBNull.Value;
我被告知我不能这样做…它不能将其转换为int。从某种意义上说,这是有意义的,因为我已经将其定义为int…但是我如何才能在其中获得DBNull?我不应该在那里有DBNull吗?AllowDBNull属性不就是为了这个吗

我显然错过了一些基本的东西。有人能解释一下是什么吗


编辑:我也尝试输入“int?”作为数据类型,但当我输入时Visual Studio抛出一个错误,说“列需要有效的数据类型。”

int不接受null,但接受int?(不可使用的版本)没有。我认为您需要该数据类型。

MyDataTableRow类中有一个生成的方法,名为:SetMyColNull()

您还可以执行以下操作:

myRow["MyCol"] = DBNull.Value;
因为
myRow[“mycl”]
属于
object类型

编辑(通过问题OP添加):

还有一个用于读取该值的对应方法IsMyColNull()。

有两件事

允许DBNull与将值设置为DBNull是一个单独的设置

我只使用了DataSet XSD接口来设置此。。。但我不仅要设置“AllowDBNull=true”,还要设置“NullValue=(null)”。最初,“NullValue”设置为“(异常)”。这意味着数据集将接受bieng.Fill()并使用null替换,但不允许手动将该值设置为null


不确定这是否是你的问题,但听起来很相似

只需进入dataset中的designer模式,右键单击要启用null的字段,然后选择properties,在properties窗口中,将AllowDBNull设置为True,将NullValue设置为(null); 这对我来说很有用!
致以最良好的祝愿

这可能会有帮助:不幸的是,这不起作用…我试过这个(我应该在问题中提到这个…我会编辑它来这样做。)当我这样做时,它会弹出一个窗口,抱怨“列需要有效的数据类型。”Egad!我怎么会错过/不知道呢?杰出的非常感谢!
myRow["MyCol"] = DBNull.Value;