如何在添加新行之前使所有列都允许为空?

时间:2012-01-31 14:11:09

标签: c# asp.net linq datatable

如何在向数据表添加新行之前使所有列都允许为空。

 dt.Rows.Add(dt.NewRow());

此行抛出异常

  

列XXX不允许空值

如何解决此问题。

4 个答案:

答案 0 :(得分:5)

在填充并准备好保存之前,不要添加该行。

DataRow row = dt.NewRow();

...用值填充行...

dt.Rows.Add(row);

答案 1 :(得分:1)

通常,数据库设计者指定由于某种原因列不能为空。例如,它可能是主键或外键,或者是必需的信息。

如果您确定没有为此特定记录提供此列的数据,请尝试传递空字符串。

答案 2 :(得分:1)

通常最好先将内存中的整行初始化,然后再将其发送到数据库(而不是在已经存在的情况下逐字段填写)。

但是,如果您绝对必须这样做,并且如果您的DBMS支持它,您可以将NOT NULL约束声明为延迟,因此它们不会被检查,直到交易提交。这是一个Oracle example

答案 3 :(得分:1)

这很少是好的解决方案。从重新设计数据库开始。

考虑从所有不必要的字段中删除NOT NULL约束。

此外,如果任何字段是强制性的,但您仍然不想在创建行期间填写它,请在数据库或中间层(ORM或其他)中设置默认值

修改 但是,在这种情况下,在使用数据初始化之前,您似乎只是尝试将空行传递给db。那将永远不会奏效; - )