我正在将数据从表 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 是否能够使用默认约束?