2014-11-07 3 views
0

Я получаю сообщение об ошибке при использовании TryUpdateModel для обновления модели с опубликованным значением. Ошибка:Получение ошибки в TryUpdateModel

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

У меня установлен ID как первичный ключ в таблице базы данных. Любая помощь будет оценена по достоинству.

/// <summary> 
    /// Edit hotel for the event 
    /// </summary> 
    /// <param name="id">Eventinstance ID</param> 
    /// <param name="form">Form parameters</param> 
    /// <returns>return the new added hotel model to view</returns> 
    [HttpPost] 
    public ActionResult EditHotelForEvent(int id, FormCollection form) 
    { 

     EventHotelDetail hoteldetails = eventRepo.getHotelbyID(id); 
     if (ModelState.IsValid && TryUpdateModel(hoteldetails)) // update the model with the form values 
     { 
      hoteldetails.isDefault = true; 
      EventRepository.ApplyModifiedProperties(hoteldetails); 
      ViewData["success"] = "Hotel added successfully"; 
      eventRepo.Save(); 
     } 
     return View("AddHotelForEvent", hoteldetails); 
    } 
+0

отладить и получить значения в 'form' и' hoteldetails' пожалуйста. в вашем FormCollection может быть нежелательный идентификатор. можете ли вы вставить форму в свою точку зрения тоже? –

+0

'TryUpdateModel' не должен вызывать ошибку. Какая строка бросает ошибку? –

ответ

1

Вы не можете изменить первичный ключ (ID в вашем случае).

Почему вы хотите изменить идентификатор? id - это уникальный номер, который не должен иметь никакого значения, но быть уникальным для конкретного объекта и поэтому не должен изменяться. если вы хотите, чтобы другой объект создал другой, но не пытайтесь изменить идентификатор.

Edit:

Проверьте эти инструкции, первичный ключ может отсутствовать из базы данных:

Шаг 1: Проверьте, правильно ли ваша таблица имея столбец первичного ключа в базе данных или нет. Если у него нет первичного ключа, кроме добавления первичного ключа. Потому что, если мы не добавляем первичный ключ в таблицу, а сущность framework создает свою собственную коллекцию ключей и добавляет в нее все столбцы.

Шаг 2: Откройте файл .edmx, чтобы увидеть отображение объекта таблицы. Вы увидите, что каждый столбец таблицы имеет значок, похожий на первичный ключ. Поэтому напишите на своей странице и обновите .edmx из базы данных.

Шаг 3: Если вы по-прежнему видите одинаковые значки первичного ключа для всех столбцов, чем щелкните по имени столбца, вы хотите обновить его по одному и перейдите в окно свойств и установите для свойства Entity Key значение false.

Взятый с here.

+0

Я не изменяю его, а также не использую нигде в моем коде ... – Nishant

+0

Я отредактировал свой ответ, посмотрю –

1

В сообщении об ошибке четко указывается проблема. Вы пытаетесь изменить первичный ключ объекта, и это запрещено.

+0

Я не использую значение ID в любом месте своего кода. Это просто для получения старых данных, которые должны быть обновлены опубликованной моделью. – Nishant

+0

, пожалуйста, предоставьте часть кода, в которой вы получите сообщение об ошибке. –

+0

EventHotelDetail hoteldetails = eventRepo.getHotelbyID (id); if (ModelState.IsValid && TryUpdateModel (hoteldetails)) – Nishant

Смежные вопросы