Sql 在一个设置中使用ADO.NET为每个父级插入多个父行和多个子行

Sql 在一个设置中使用ADO.NET为每个父级插入多个父行和多个子行,sql,vb.net,ado.net,Sql,Vb.net,Ado.net,我正在寻找一位howto或ADO.NET专家,他可以向我解释如何正确解决以下情况: 我在一个数据集中有两个数据表: ParentTable ParentID,用户数据的名称 子表ParentID、ActivityID。。。对于进度数据 表通过ParentID在数据库级别链接在一起,ParentID是ParentTable中的标识列 这两个表都是绑定到GUI上单独DataGridView的数据。表之间应该有一个1 parent/N children关系,这意味着如果我在ParentTable中创建

我正在寻找一位howto或ADO.NET专家,他可以向我解释如何正确解决以下情况:

我在一个数据集中有两个数据表:

ParentTable ParentID,用户数据的名称 子表ParentID、ActivityID。。。对于进度数据 表通过ParentID在数据库级别链接在一起,ParentID是ParentTable中的标识列

这两个表都是绑定到GUI上单独DataGridView的数据。表之间应该有一个1 parent/N children关系,这意味着如果我在ParentTable中创建了一个新条目,一个新用户就会在子网格中得到一个干净的DataGrid来为该用户键入调度数据。因此,我为每个表设置了两个DataAdapter,以将结果填充到数据集中。我还设置了一个DataRelation对象,并将其分配给DataSet,以便通过ParentID列链接这两个表。另外,当我通过DataGrid将一行添加到子表中时,我使用SetParentRow来设置父行

与道瑟 .SelectCommand=新的SqlCommandUsersSelect,conn .SelectCommand.CommandType=CommandType.StoredProcess .SelectCommand.Parameters。AddWithValue@UserID,MyID .FillDSData 以 活跃 .SelectCommand=新建SqlCommandActivitiesSelect,conn .SelectCommand.CommandType=CommandType.StoredProcess .SelectCommand.Parameters。AddWithValue@UserID,MyID .FillDSData 以 DSData.Relations.AddNew DataRelationUserActivity、DSData.table0.ColumnsParentID、DSData.table1.ColumnsParentID 将行添加到子表中:

私有子DTChildData_TableNewRowsender作为对象,e作为System.Data.DataTableNewRowEventArgs处理DTChildData.TableNewRow e、 Row.SetParentRowParentDataRow 端接头 尽管如此,更新ParentTable时,ChildTable中的ParentID列并没有填充从DB检索到的标识值

为什么??由于这个问题,我开始大量脱发……

注意几点:

1两个表之间的关系很可能不正确,因为您在关系的两侧都引用了ParentID。我猜您需要将其更改为:

DSData.Relations.Add(New DataRelation("UserActivity", DSData.Tables(0).Columns("UserID"), DSData.Tables(1).Columns("ParentID")))

2您没有显示insert或update命令,但如果它们是存储过程,并且用户ID是在该存储过程中生成的,则需要将其作为输出参数传递回存储过程。如果在insert/updated命令中有SP和参数定义,则必须同时更改SP和参数定义。

在第二次填充操作之前,会对默认表名表进行重命名,以便不会覆盖第一个表。另外,如果我使用FillSchema而不是Fill,则数据集根本不会被填充。。。奇怪的