从SQL Server视图填充DataGridView时出现ConstraintException

时间:2010-09-13 14:54:21

标签: sql datagridview view constraintexception

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

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

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

我确实理解这个特定是我在视图中加入的两个表之一中的唯一(和主键),但是,我不明白为什么这会导致我的DataGridView出错,因为

  • 我只想显示数据
  • 在Management Studio
  • 中的同一视图上执行相同的选择时,我没有遇到任何错误

为什么?我需要显示id值,我也不明白为什么我真的得到了这个错误。

提前致谢&

祝你好运

Gorgsenegger

1 个答案:

答案 0 :(得分:0)

看起来正在设置此约束,因为该值是基础表的主键。

我建议你做以下其中一项:

1)如果您只想显示此信息,请不要重新启用约束。 这可能听起来像是一个出局,但实际上,如果你不需要信息,那就没有必要了。

2)更好的是,只需删除数据集设计器中“错误”生成的密钥即可。这将意味着您不必首先禁用表约束!

希望这有帮助。

J Dubs。