私はAccessデータベースに基づいてWPFプロジェクトを作成しています。C#WPF:外部キー制約のあるレコードを削除する(Access db)
- 映画(MOVIEID::PK、タイトル、ディレクターなど)
- 俳優(アクターID:PK、MOVIEID:FK、ファーストネーム、姓など)
問題がある データベースには、2つのテーブルを持っています映画を削除したい場合は、まだ映画に 人の俳優がついていればエラーになります。映画を削除するための
マイコード:私は俳優が映画から削除された場合に確認のメッセージが表示されますメッセージボックスを追加しました一時的な解決策として
public static void DeleteMovie(Movie mov)
{
string commandString = string.Format("DELETE FROM tblMovies WHERE MovieID = {0}", mov.MovieID);
OleDbConnection conn = new OleDbConnection(connectionString);
OleDbCommand command = new OleDbCommand();
OleDbDataAdapter adapter = new OleDbDataAdapter();
conn.Open();
command.Connection = conn;
command.CommandText = commandString;
adapter.DeleteCommand = command;
adapter.DeleteCommand.ExecuteNonQuery();
conn.Close();
}
。そうでないと、あなたがクリックした場合しかし、はい、これは起こる:
Movie mov = (Movie)listBoxMovies.SelectedItem;
MovieRepository.DeleteMovie(mov);
MessageBox.Show("The movie: '" + mov.Title + " 'has been deleted.");
私は同じMOVIEIDと俳優を持っているムービーを削除したい取得エラー:
タイプの未処理の例外'System.Data.OleDb.OleDbException'がSystem.Data.dllで発生しました 追加情報: 'tblActors'テーブルに関連レコードが含まれているため、レコードを削除または変更できません。
「ムービーを削除」ボタンをクリックすると、ムービーとそれぞれのアクターの両方が削除されるようにするにはどうすればよいですか?
ありがとう、私はアクセスの関係を変更し、それが動作します。 私はdelete movieクエリにdeleteアクタークエリを追加しようとしていましたが、2番目のものだけが実行されていました(アクターが削除されています)。 ありがとうございます! – Jasper