如何在C#.NET数据集表列中为唯一值设置约束?

时间:2010-09-30 19:27:25

标签: c# .net dataset

我有一个包含几张表的数据集。在我要添加的其中一个表中,我希望有一个约束,如果我在列中有唯一值,它只允许添加一行。

表:用户 列:AutoID,GroupID,UnitID *等

在MVS2008中,我去了Designer并将UnitID的Unique属性设置为true,但它没有用。

我还在硬编码的地方添加了一行:this.dataset.Users.UnitIDColumn.Unique = true并尝试了一个try / catch(InvalidConstraintException),但每当我对其进行硬编码时,即使值很大,我总是会得到异常是独一无二的

如何限制只添加具有唯一UnitID的行?提前谢谢。

2 个答案:

答案 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;