针对父DataTable的更新命令接受对子Datatable的更改?

时间:2012-11-06 17:04:05

标签: vb.net ado.net

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

问题是子表中的行没有插入到数据库中。出于调试目的,我在代码示例中添加了changesBeforechangesAfter,以查看子表中存在哪些已更改的行。当我使用调试器逐步执行代码时,changesBefore会保留新的子行。 changesAfterNothing。它几乎就像对标头表调用Update一样,在子表上触发AcceptChanges

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

        Dim changesBefore = _ds.ResponseDetails.GetChanges

        headersTa.Update(_ds.ResponseHeaders)

        Dim changesAfter = _ds.ResponseDetails.GetChanges

        detailsTa.Update(_ds.ResponseDetails)

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

现在正在运作。事实证明,数据集中的每个关系都有AcceptRejectRule属性。我将规则设置为Cascade,因此当针对父级调用AcceptChanges时,基本上将Update级联到子表。将规则更改为None解决了我的问题。

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