0

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

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

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

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

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

这是为什么?我需要显示 id 值,而且我也不明白为什么我实际上会收到该错误。

提前致谢 &

此致

戈尔塞格

4

1 回答 1

0

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

我建议您可能执行以下操作之一:

1)如果您只想显示此信息,则不要费心重新启用约束。这可能听起来像是一种脱身,但实际上,如果您不需要信息,那么拥有它是没有意义的。

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

希望这可以帮助。

J配音。

于 2010-09-15T15:03:57.577 回答