C# 如何在添加新行之前使所有列都允许null?

C# 如何在添加新行之前使所有列都允许null?,c#,asp.net,linq,datatable,C#,Asp.net,Linq,Datatable,如何在向datatable添加新行之前使所有列都允许null dt.Rows.Add(dt.NewRow()); 此行抛出一个异常 列XXX不允许为空 如何解决此问题。在该行被填充并准备好保存之前,您不会添加该行 DataRow row = dt.NewRow(); …用值填充行 dt.Rows.Add(row); 通常,数据库设计器指定列不能为null,这是有原因的。例如,它可能是主键或外键,或者是强制信息 如果您确定可以不为此特定记录的此列提供任何数据,请尝试传递空字符串 通常最好在

如何在向datatable添加新行之前使所有列都允许null

 dt.Rows.Add(dt.NewRow());
此行抛出一个异常

列XXX不允许为空


如何解决此问题。

在该行被填充并准备好保存之前,您不会添加该行

DataRow row = dt.NewRow();
…用值填充行

dt.Rows.Add(row);

通常,数据库设计器指定列不能为null,这是有原因的。例如,它可能是主键或外键,或者是强制信息


如果您确定可以不为此特定记录的此列提供任何数据,请尝试传递空字符串

通常最好在将整行发送到数据库之前初始化内存中的整行(而不是在已经存在的情况下逐个字段填充)


但是,如果您绝对必须这样做,并且您的DBMS支持这样做,那么您可以将NOTNULL约束声明为延迟的,这样在事务提交之前不会检查它们。这里有一个。

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

考虑从所有非必需字段中删除NOTNULL约束

另外,若任何字段是必需的,但在创建行时仍不希望填充,请在数据库或中间层(ORM或其他)中设置默认值

编辑:
然而,在这种情况下,看起来您只是试图在用数据初始化它之前将一个空行传递给db。那是行不通的;-)

数据表有很多列,我想用一行来初始化它,以便以后使用。要执行类似操作:
dt.Rows[0][“regnum_e”]=dt_。Rows[0][“regnum_e”].ToString().TrimEnd()在不引发异常的情况下,位置0处没有行。dt.NewRow()初始化一行,dt.Rows.Add()保存该行。在尝试将数据行添加到Rows.Eggxelent!之前,至少需要将所需的值添加到从NewRow()获得的数据行中!;我只需要包含一个新行来收集DataTable的列设置。使用此选项,我可以访问设置,而无需在原始数据表中包含行。请停止使用“Q:”开始您的帖子。这是没有必要的,它让你的问题在预览列表中看起来很有趣,只显示了你文章的前几行。好吧,我想把我的问题格式化。但是任何新的问题都没有
Q
:)谢谢你的提示。