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