我有一个SQL Server视图,它可以简单地连接两个表并返回一些列。在Management Studio中运行此视图不会导致任何问题,将返回预期的数据(两行)。
当我在Visual Studio中将此视图用作TableAdapter的数据源时,我得到一个ConstraintException,说“无法启用约束。一行或多行包含违反非null,唯一或外键约束的值。”。
在调用tableAdapter.Fill(dataSet.vwMyView)之前我使用了EnforceConstraints = false,因此我可以获得有关此问题原因的更多信息。我最后得到一条消息,说“MyColumn”列有一个约束条件,它必须是唯一的,但值4(一个id)已经存在(是的,这个id有两行)。
我确实理解这个特定是我在视图中加入的两个表之一中的唯一(和主键),但是,我不明白为什么这会导致我的DataGridView出错,因为
为什么?我需要显示id值,我也不明白为什么我真的得到了这个错误。
提前致谢&
祝你好运
Gorgsenegger
答案 0 :(得分:0)
看起来正在设置此约束,因为该值是基础表的主键。
我建议你做以下其中一项:
1)如果您只想显示此信息,请不要重新启用约束。 这可能听起来像是一个出局,但实际上,如果你不需要信息,那就没有必要了。
2)更好的是,只需删除数据集设计器中“错误”生成的密钥即可。这将意味着您不必首先禁用表约束!
希望这有帮助。
J Dubs。