使用关系更新数据表

时间:2012-08-15 14:26:54

标签: c# visual-studio-2010 .net-4.0 dataset sql-server-2008-r2

我尝试使用在数据集设计器中生成的关系和表适配器来更新两个表。但是无法执行子表更新,它没有插入,问题是在子表更新期间标识列值未知。 表“Users”具有主键和标识列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);

我设置了关系类型,更新规则:级联,删除规则:级联,接受规则:无。刷新数据表选项已选中。在数据库上,外键也设置为级联更新,并强制执行复制并将外键强制为yes。 我做错了什么? 我在用户表更新后尝试了Users.GetChanges(),但没有得到任何更改。它现在唯一的工作方式是在更新后再次填充用户表。分别尝试更新表适配器,但是然后得到错误违反外键。

1 个答案:

答案 0 :(得分:0)

你错过了创建一个datarelation对象 这里怎么做: http://msdn.microsoft.com/en-us/magazine/cc188919.aspx