65.9K
CodeProject 正在变化。 阅读更多。
Home

C# DataAdapter 返回异常“未能启用约束。”

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2投票s)

2022 年 7 月 15 日

CPOL

1分钟阅读

viewsIcon

4892

我们解释如何调试并获取关于通用异常“未能启用约束。”的更多信息。

1. 问题

在使用 C# ADO.NET DataAdapter 技术访问 SqlServer 数据库的一个应用程序开发过程中,我开始收到一个带有非常宽泛信息的异常:“未能启用约束。 一些或多行包含违反非空、唯一或外键约束的值。” 使用异常堆栈跟踪,很容易找到该异常的来源。

它是 DataAdapter 调用 FillByFilename() 方法。 但是,问题在于该消息过于宽泛,我无法确定哪个约束失败了。 因此,我需要更多信息。 不幸的是,库的创建者未能提供更多信息到 Exception 本身,因此需要进行更多的调试。

2. 解决方案

2.1. 定位方法本身

第一步是定位该方法(在设计器自动生成的文件中)的源代码。

2.2. 启用生成代码的调试

在 Visual Studio 选项中,禁用仅调试您的代码

2.3. 在生成代码中添加 Try-Catch

添加 try-catch 代码和对 GetErrors() 方法的调用到自动生成的 DataAdapter 代码中。 在 catch 语句上设置断点。

2.4. 调试并查看错误信息

启动您的调试会话,并在调试器中检查 GetErrors() 方法的结果。 您将确切地看到哪个约束失败了。

3. 将生成代码恢复到正常状态

不要忘记将您的自动生成代码恢复到正常状态。 因为您现在正在使用 catch 语句抑制异常,只需在设计器中更改一些内容,DataAdapter 代码就会再次自动生成,您的调试更改将被覆盖。

历史

  • 2022 年 7 月 15 日:初始版本
© . All rights reserved.