【发布时间】:2011-08-17 14:53:24
【问题描述】:
我正在将数据从表 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 是否能够使用默认约束?
【问题讨论】:
标签: c# ado.net constraints sqlcommandbuilder