我有一个包含几张表的数据集。在我要添加的其中一个表中,我希望有一个约束,如果我在列中有唯一值,它只允许添加一行。
表:用户 列:AutoID,GroupID,UnitID *等
在MVS2008中,我去了Designer并将UnitID的Unique属性设置为true
,但它没有用。
我还在硬编码的地方添加了一行:this.dataset.Users.UnitIDColumn.Unique = true
并尝试了一个try / catch(InvalidConstraintException),但每当我对其进行硬编码时,即使值很大,我总是会得到异常是独一无二的
如何限制只添加具有唯一UnitID的行?提前谢谢。
答案 0 :(得分:0)
每个MSDN
private void AddConstraint(DataTable table)
{
UniqueConstraint uniqueConstraint;
// Assuming a column named "UniqueColumn" exists, and
// its Unique property is true.
uniqueConstraint = new UniqueConstraint(
table.Columns["UniqueColumn"]);
table.Constraints.Add(uniqueConstraint);
}
答案 1 :(得分:0)
我相信您可以通过在DataSet设计器中将列指定为主键来实现这一目的。
我已经尝试在DataSet设计器中添加一个名为Test的DataTable,其中包含2列,其中一列称为ID,它是主键。只需选择它,右键单击并选择“设为主键”
当我尝试以下代码时
PharmacyDataSet.TestDataTable table = new PharmacyDataSet.TestDataTable();
table.AddTestRow(1, "one");
table.AddTestRow(1, "oneagain");
我得到了System.Data.ConstraintException {“列'ID'被限制为唯一。值'1'已经存在。”}
设计师生成的代码是
this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] {this.columnID}, true));
this.columnID.Unique = true;