向bindingsource添加新记录时设置父行(dataset - parent-child)

时间:2012-11-10 06:04:28

标签: c# ado.net dataset parent-child master-detail

有人可以帮助我,如何在绑定源中添加新记录时设置父行? 我正在使用类型化数据集,C#winforms。

我的代码(添加父行和子行):

DataRowView drvParent = (DataRowView)bsParent.AddNew()
drvParent.BeginEdit();
drvParent["ID"] = -1;
drvParent["Name"] = "Parent";
drvParent.EndEdit();
DataRowView drvChild = (DataRowView)bsChild.AddNew();
drvChild.BeginEdit();
drvChild["ID"] = -1;
drvChild.Row.SetParentRow(drvParent.Row);
drvChild["Name"] = "Child";
drvChild.EndEdit();

然后单击“保存”按钮:

this.Validate();
bsChild.EndEdit();
bsParent.EndEdit();
ParentTableAdapter pAdapter = new ParentTableAdapter();
pAdapter.Update(myDataSet.Parent);
ChildTableAdapter cAdapter = new ChildTableAdapter();
cAdapter.Update(myDataSet.Child);

ID中的父项为空,为什么?而我已经设置了孩子的父行。 感谢

1 个答案:

答案 0 :(得分:0)

我目前正在处理类似的问题。您希望确保父/子表之间具有正确的DataRelations。在这种情况下,这将是外键的形式。没有外键关系,我认为发生的事情是你首先在父表上做更新,为父进行生成ID,然后子进程的第二次更新尝试使用-1更新,这不再是外键。如果设置了外键关系,则在父表更新后,应使用正确的ID填充子表外键。

相关问题