我正在将表A的数据复制到表B中。 表B有一个可空列,其默认约束值为0。 通常情况下,我使用以下访问器设置列的值。
public object this[string columnName]
{
get { return DataTable.Rows[CurrentRow][columnName]; }
set { DataTable.Rows[CurrentRow][columnName] = value; }
}
但是我没有设置可为空的列X。
当我插入整行时,不使用默认值。可为空的列插入NULL而不是0。
_sqlCommandBuilder = new SqlCommandBuilder(_sqlDataAdapter);
_sqlCommandBuilder.ConflictOption = ConflictOption.OverwriteChanges;
_sqlCommandBuilder.SetAllValues = false;
_sqlDataAdapter.Update(DataTable);
我也得到了模式:
_sqlDataAdapter.Fill(DataTable);
_sqlDataAdapter.FillSchema(_dataTable, SchemaType.Mapped);
为什么ADO.NET将我的X列设置为null,尽管我没有设置它?
我认为当我不设置X列的值时,ADO.NET会从给定的约束条件中获取默认值。
ADO.NET CommandBuilder能否使用默认约束?