Vb.net 是否针对父数据表更新命令,以接受对子数据表的更改?
我在两个表之间设置了父子关系。父表的主键设置为自动递增值。这工作正常,父数据表中的新行用我在TableAdapter上调用Vb.net 是否针对父数据表更新命令,以接受对子数据表的更改?,vb.net,ado.net,Vb.net,Ado.net,我在两个表之间设置了父子关系。父表的主键设置为自动递增值。这工作正常,父数据表中的新行用我在TableAdapter上调用Update时插入的键的实际值刷新 问题是子表中的行没有插入到数据库中。出于调试目的,我在代码示例中添加了changesBefore和changesAfter,以查看子表中存在哪些更改的行。当我使用调试器单步执行代码时,changesBefore会保存新的子行更改后为无。就好像对头表调用Update触发子表上的AcceptChanges 我熟悉使用DataTables和Tab
Update
时插入的键的实际值刷新
问题是子表中的行没有插入到数据库中。出于调试目的,我在代码示例中添加了changesBefore
和changesAfter
,以查看子表中存在哪些更改的行。当我使用调试器单步执行代码时,changesBefore
会保存新的子行<代码>更改后为无
。就好像对头表调用Update
触发子表上的AcceptChanges
我熟悉使用DataTables和TableAdapters进行插入/更新,但这是我第一次尝试在父表上使用自动增量。我错过了什么
Dim changesBefore = _ds.ResponseDetails.GetChanges
headersTa.Update(_ds.ResponseHeaders)
Dim changesAfter = _ds.ResponseDetails.GetChanges
detailsTa.Update(_ds.ResponseDetails)
完成标题更新后,需要使用标题记录中自动生成的id更新详细信息记录中的链接字段。这不会自动发生在您身上。这正在工作。事实证明,数据集中的每个关系都有一个
AcceptRejectRule
属性。我将规则设置为Cascade
,因此当针对父表调用Update
时,它基本上是将AcceptChanges
级联到子表。将规则更改为None
解决了我的问题
我在数据集上设置了一个关系,因此链接字段正在更新。我在对父项调用Update后发布了_ds.ResponseDetails来证实这一点。子行在链接字段中具有父行PK的正确值。问题似乎是,对子表的更新不会保存任何内容,因为它认为该表没有包含更改的行。