Внешний ключ в приложении MVC 3 - PullRequest
0 голосов
/ 21 февраля 2012

Я создал небольшое приложение MVC. В нем у меня есть две таблицы:

  • movieLanguage - LanguageID (первичный ключ), Language
  • Movie - MovieID (первичный ключ), LanguageID (Fkey), Moviename и т. Д.

Когда я пытаюсь обновить таблицу фильмов:

var movie = movEntity.Movies.Single(a => a.MovieID == id);
TryUpdateModel(movie);
movEntity.SaveChanges();
return RedirectToAction("Index");

Я получаю сообщение об ошибке:

Свойство LanguageID является частью ключевой информации объекта и не может быть изменено.

Может кто-нибудь помочь мне решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 21 февраля 2012

Как сказал jqauffin, вы можете обратиться к этому видео и доступным там учебникам. Для вашей проблемы вы пытаетесь перезаписать значение «ключа», и именно поэтому ошибка.

Вы можете сделать одно из следующих действий.

  1. Столбец идентификации не автоматически увеличивается, но все еще является Первичным ключом, и вы пытаетесь вставить другую строку с тем же PK, что недопустимо
  2. Столбец идентификаторов автоматически увеличивается, и вы пытаетесь вставить / обновить эту строку во второй раз.

Попробуйте создать новый экземпляр требуемой таблицы с помощью оператора «new», а затем вставьте. Так что каждая строка считается новой записью.

Пожалуйста, обратитесь к этому блогу для примера фрагмента кода: http://www.asp.net/mvc/tutorials/movie-database/create-a-movie-database-application-in-15-minutes-with-asp-net-mvc-cs

Счастливого обучения

0 голосов
/ 21 февраля 2012

Ошибка говорит о том, что вы пытаетесь скопировать свойство LanguageID, и это невозможно, поскольку оно используется для идентификации строки в таблице базы данных.

Подобного рода ошибок можно избежать, если использовать правильную модель вида.

Прочитайте мой следующий пост в блоге: http://blog.gauffin.org/2011/07/three-reasons-to-why-you-should-use-view-models/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...