我遇到了一个奇怪的行为,当我尝试更改 EnforceConstraints 值“false”>“true”时,它会引发 NullReferenceException。
dataSet1.EnforceConstraints = true;
最奇怪的是,当我尝试保存数据 3 次时抛出异常。
1. 创建数据(dataTable1 中的新行)。保存。
2.更改一些字段值。保存。
3. 更改相同的数据。尝试保存但出现异常。
4.如果我更改相同的数据并再次尝试保存,我会再次收到异常,但如果我不这样做,所有数据都会完美保存。
注意 1:当我使用创建、保存的数据并重新加载包含此数据的表单时,不会引发异常。
注意 2:当我调用currencyManager.EndCurrentEdit();时,(1, 2) 和 3 点场景之间的所有行为差异都会发生。一个与我的dataSet1相关的控件。如果我在场景的第 1 点和第 2 点中尝试在EndCurrentEdit()前一步和后一步调试期间更改 EnforceConstraints 值,调试器将显示异常。但是在调用EndCurrentEdit()后的第 3 点中,我可以将调试器中的 EnforceConstraints 值从“false”更改为“true”,然后返回没有任何问题。
PS:我知道这些信息可能还不够,但是项目非常庞大,我需要一些想法,如何找到我的 NullReferenceException 的原因。
我只需要有关 MSDN 中的 currencyManager.EndCurrentEdit() 和 EnforceConstraints 的更多信息。或者可能是我错过了什么或者它是微软的错误?谢谢你。
更新:
StackTrace:
在 System.Data.DataSet.EnableConstraints()
的 System.Data.DataColumn.IsNotAllowDBNullViolated()
在 System.Data.DataSet.set_EnforceConstraints(布尔值)
在 MyProject.MyMethod() 在 d:...\ SomeFileName.cs:line 9795
异常消息:
“对象引用未设置为对象的实例。”