Я делаю проект WPF на основе базы данных Access. База данных содержит две таблицы:C# WPF: удалить запись с ограничениями внешнего ключа (Access db)
- Фильмы (MovieID: PK, название, директор и т.д.)
- Актеры (ActorID: PK, MovieID: FK, ПгвЬЫате, Lastname и т.д.)
Проблема заключается в если я хочу удалить фильм, я получаю сообщение об ошибке, если есть еще актеров, прикрепленных к фильму.
Мой код для удаления фильма:
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();
}
Как временно решение я добавил MessageBox, который запрашивает подтверждение, если актеры будут удалены из фильма. Но если они не являются, и вы нажимаете да, это происходит:
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' включает связанные записи.
Как я могу сделать так, чтобы, если я нажму кнопку «удалить фильм», как фильм, так и соответствующие участники будут удалены?
Большое спасибо, я изменил отношения в Access, и он работает. Я пытался добавить запрос на удаление объекта в запрос на удаление видео, но затем исполнялся только второй (удаляются участники). Спасибо! – Jasper