.net 从数据适配器填充数据表时出错

.net 从数据适配器填充数据表时出错,.net,sql-server,database,.net,Sql Server,Database,我得到这个错误,但只是偶尔。99.9%的时间工作正常: 未能启用约束。一个或多个行包含违反非空、唯一或外键约束的值 有人知道原因是什么吗?我只使用该数据表进行查看而不进行更新,因此是否可以轻松地以某种方式关闭所有约束?当数据集上的模式强制执行数据库没有的内容时,通常会发生这种情况 VisualStudio将自动读取模式,并尝试在数据集上设置一些主键,但如果您使用的视图可能返回多行,则会失败。通过在设计器中删除约束,可以很容易地从数据集本身删除这些约束 检查以确保在可能有两行具有相同键的情况下,数

我得到这个错误,但只是偶尔。99.9%的时间工作正常:

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


有人知道原因是什么吗?我只使用该数据表进行查看而不进行更新,因此是否可以轻松地以某种方式关闭所有约束?

当数据集上的模式强制执行数据库没有的内容时,通常会发生这种情况

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


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

在填充数据表之前设置为false

如果使用XSD数据集定义架构和可变长度字段的最大长度,也会出现此错误(varchar、varbinary等)在数据库中增加,但不会重新生成XSD

在我的例子中,我有一个
varchar(100)
数据库字段,其文本值长度为60个字符。XSD希望此字段的最大长度为50(您可以在Designer.cs文件的
InitClass()
方法中看到)。加载此记录时,我收到“未能启用约束”错误消息。更新记录以将字段减少到50以下将删除错误。

我将添加“在填充数据集之前”。