2

データセットデザイナで生成されたリレーションとテーブルアダプタを使用して、2つのテーブルを更新しようとしています。ただし、子テーブルの更新を実行できません。挿入されません。問題は、子テーブルの更新中にID列の値が不明であるということです。テーブル「Users」には、主キーとID列の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テーブルの更新後にUsers.GetChanges()を試しましたが、変更がありません。現在機能する唯一の方法は、更新後にユーザーテーブルを再度入力することです。テーブルアダプタを個別に更新しようとしましたが、外部キーに違反してエラーが発生しました。

4

1 に答える 1

0

ここで datarelation オブジェクトを作成するのを忘れました。その方法: http://msdn.microsoft.com/en-us/magazine/cc188919.aspx

于 2012-08-15T14:38:56.173 に答える