2008-10-01 63 views
2

我收到此错误,但只是偶尔发生。 99.9%的时间工作正常:从数据适配器填充数据表时发生错误

未能启用约束。一行或多行包含违反非空,唯一或外键约束的值。

有没有人有任何想法可能是什么原因?我只使用该数据表进行查看和不更新,因此是否可以轻松关闭所有约束?

回答

2

这通常发生在您的数据集上的架构正在执行您的数据库所没有的事情时。

Visual Studio将自动读取模式并尝试在数据集上设置一些主键,但如果您使用的视图可能返回多行,则它将失败。通过删除设计器中的约束,很容易从DataSet本身删除这些约束。

检查以确保您的数据集不会在可能有两行具有相同键的情况下强制执行主键,例如在将两个表连接在一起并因此复制父表中的行的View中。 VS默认情况下会尝试创建父表的主键作为数据集的唯一约束,但视图本身不会强制执行此类约束。

0

这个错误之前也可以存在,如果您使用的是XSD数据集来定义您的架构和可变长度字段(VARCHAR,等等)的最大长度在数据库中增加,但XSD不会重新生成。

对我而言,我有一个varchar(100)数据库字段,其文本长度为60个字符。 XSD预计此字段的最大长度为50(您可以在Designer.cs文件的InitClass()方法中看到此内容)。当这个记录被加载时,我收到“无法启用约束”错误消息。更新记录以减少低于50的字段将消除错误。

相关问题