2

我尝试使用数据集设计器中生成的关系和表适配器更新两个表。但是无法执行子表更新,它没有插入,问题是在子表更新期间标识列值是未知的。表“用户”具有主键和身份列 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(),但没有得到任何更改。它现在工作的唯一方法是在更新后再次填充用户表。分别尝试更新表适配器,但随后出现违反外键的错误。

4

1 回答 1

0

您错过了在这里创建数据关系对象的方法:http: //msdn.microsoft.com/en-us/magazine/cc188919.aspx

于 2012-08-15T14:38:56.173 回答