我尝试使用数据集设计器中生成的关系和表适配器更新两个表。但是无法执行子表更新,它没有插入,问题是在子表更新期间标识列值是未知的。表“用户”具有主键和身份列 UserId。表“UserInRoles”具有 UserId 列和 Users.UserId 的外键。这是我的代码:
usersTableAdapter.Fill(ds.Users);
userInRolesTableAdapter.Fill(this. ds.UserInRoles);
DataRow userRow = ds.Users.NewRow();
userRow["UserName"] = userName; // and fill other userRow fields.
DataRow userRoleRow = ds.UserInRoles.NewRow();
userRoleRow["RoleId"] = selectedRole; // leave unfilled column "UserId", because I thing the relational update should do it.
userRoleRow.SetParentRow(userRow, ds.Relations["FK_UserInRoles_Users"]);
ds.Users.Rows.Add(userRow);
ds.UserInRoles.Rows.Add(userRoleRow);
tableAdapterManager.UpdateAll(ds);
ds.AcceptChanges();
//usersTableAdapter.Update(ds.Users);
//userInRolesTableAdapter.Update(ds.UserInRoles);
我设置了两个关系类型,更新规则:级联,删除规则:级联,接受规则:无。刷新数据表选项被选中。在数据库上,外键也设置为级联更新,并强制复制并将外键强制为是。我做错了什么?我在用户表更新后尝试了 Users.GetChanges(),但没有得到任何更改。它现在工作的唯一方法是在更新后再次填充用户表。分别尝试更新表适配器,但随后出现违反外键的错误。