C# ADO.NET数据集-对不同表中的列具有唯一约束

C# ADO.NET数据集-对不同表中的列具有唯一约束,c#,.net,dataset,unique-constraint,C#,.net,Dataset,Unique Constraint,我正在Visual Studio 2008中用C#in.NET 3.5编写一个程序。我有一个包含两个数据表a和B的数据集。在表a中是数据列Y,在表B中是列Z,再加上两个表中的更多列。Y列和Z列都设置为唯一的自动递增列 我希望Y和Z在两者之间也是独一无二的。如中所示,如果表A已经有一行Y列中有一个3,而我正在表B中创建一个新行,并且它希望在该新行的Z列中有一个3,那么它将跳过3并放入一个4 我尝试了一些看起来应该有效的方法: myDataSet.Tables["A"].Constraints.Ad

我正在Visual Studio 2008中用C#in.NET 3.5编写一个程序。我有一个包含两个数据表a和B的数据集。在表a中是数据列Y,在表B中是列Z,再加上两个表中的更多列。Y列和Z列都设置为唯一的自动递增列

我希望Y和Z在两者之间也是独一无二的。如中所示,如果表A已经有一行Y列中有一个3,而我正在表B中创建一个新行,并且它希望在该新行的Z列中有一个3,那么它将跳过3并放入一个4

我尝试了一些看起来应该有效的方法:

myDataSet.Tables["A"].Constraints.Add(new UniqueConstraint(new DataColumn[] { myDataSet.Tables["A"].Columns["Y"], myDataSet.Tables["B"].Columns["Z"] }));
myDataSet.Tables["B"].Constraints.Add(new UniqueConstraint(new DataColumn[] { myDataSet.Tables["A"].Columns["Y"], myDataSet.Tables["B"].Columns["Z"] }));
但是,如果我运行应用程序,并且它到达该代码,则在第一行会出现以下错误:

System.Data.InvalidConstraintException未处理
Message=“无法从属于不同表的列创建键。”
Source=“System.Data”

我向两个表中添加相同的UniqueConstraint的原因是,我不确定是否还可以将其放置在其他位置以使其处于活动状态。我不希望将这些表合并到一个表中,因为它们之间除了Y列和Z列之外几乎没有什么关系

有人知道怎么做吗?MSDN文档没有提到多个表,而且似乎没有其他人尝试过


我已经解决了这个问题。在我的程序中,我已经使用了一些外键检查来跟踪我正在处理的表。我原以为从现在开始换一种方式可能会更容易,但我决定保留我目前的技术(在需要的地方稍微扩展一下,比如在我的程序的其他组件中添加更详细的身份信息),结果证明效果很好

我最终所做的并不能真正解决我在这里发布的问题。我向希望在这里得到答案的谷歌人道歉。

特别提到了一个数据表:

UniqueConstraint对象,它可以 可以指定给单个列 或指向一个数组中的列 数据表(重点矿山)


我认为您无法获取DataTable来强制执行此操作,您必须手动强制执行此行为。

当我读到这篇文章时,不知怎的忽略了这一点。是的,我确实可以用手来做。奇怪的是,DataSet没有一种方法来为您强制执行此操作,因为我认为这是一种常见的方法。我可能创建一个新表的唯一目的是拥有一个自动递增的列,并将新行从该列反映到我要添加到的任何表中。@pgn674:在真实的数据库中,您将如何做到这一点?这并不常见。