0

我在两个表之间设置了父子关系。父表设置为其主键的自动增量值。Update这工作正常,父 DataTable 中的新行使用我调用TableAdaptor时刚刚插入的键的实际值进行刷新。

问题是子表中的行没有被插入到数据库中。出于调试目的,我将changesBefore和添加changesAfter到代码示例中以查看子表中存在哪些更改的行。当我使用调试器单步执行代码时,changesBefore包含新的子行。changesAfterNothing。几乎就好像Update对标题表的调用正在AcceptChanges子表上触发。

我熟悉使用 DataTables 和 TableAdapters 进行插入/更新,但这是我第一次尝试在父表上使用自动增量。我在这里想念什么?

        Dim changesBefore = _ds.ResponseDetails.GetChanges

        headersTa.Update(_ds.ResponseHeaders)

        Dim changesAfter = _ds.ResponseDetails.GetChanges

        detailsTa.Update(_ds.ResponseDetails)
4

2 回答 2

0

完成标头更新后,您需要使用标头记录中自动生成的 id 更新详细记录中的链接字段。这不会为您自动发生。

于 2012-11-06T17:57:16.267 回答
0

现在正在工作。事实证明,AcceptRejectRule数据集中的每个关系都有一个属性。我设置了规则,Cascade所以当被调用反对父时,它基本上是级联AcceptChanges到子表的。Update更改规则以None解决我的问题。

http://msdn.microsoft.com/en-us/library/system.data.acceptrejectrule(v=vs.80).aspx

于 2012-11-06T19:19:27.677 回答