2010-09-13 40 views
0

我有一个SQL Server视图,它可以简单地连接两个表并返回一些列。在Management Studio中运行此视图不会导致任何问题,将返回预期的数据(两行)。当从SQL Server视图填充DataGridView时出现ConstraintException

当我在Visual Studio中将此视图用作TableAdapter的数据源时,我得到一个ConstraintException异常,说“无法启用约束,一行或多行包含违反非空,唯一或外键约束的值。 。

在调用tableAdapter.Fill(dataSet.vwMyView)之前,我使用了EnforceConstraints = false,因此我可以获得关于此问题原因的更多信息。我结束了一个消息,说“列MyColumn”有一个约束,它必须是唯一的,但值4(一个ID)已经存在(是的,有两行这个ID)。

我不明白,这尤其是独一无二的(和主键)在两个表我在我看来加盟的一个,但是,我不明白为什么这应该在我的DataGridView导致一个错误,因为

  • 我只想显示数据
  • 执行在Management Studio中的非常相同的观点

为什么是同样的选择时,我没有得到任何错误?我需要显示id值,而且我也不明白为什么我实际得到这个错误。

在此先感谢&

问候

Gorgsenegger

回答

0

看起来,这种限制被设定,因为值是从底层表的主键。

我建议你也许执行下列操作之一:

1)如果你只是想显示该信息,那就不必重新启用的约束。 这可能听起来像是脱口而出,但是,如果你不需要信息,那就没有意义了。

2)更好的是,只需删除在数据集设计器中'错误'生成的密钥。这意味着你不必在第一时间打扰禁用表约束!

希望这会有所帮助。

J Dubs。