Как обновить реляционную базу TABELS?

Я использую Entity Framework 4.0. Я столкнулся с проблемой при обновлении данных в базе данных. Я получаю это исключение:

Объект с таким же ключом уже существует в ObjectStateManager.

ObjectStateManager не может отслеживать несколько объектов с одним и тем же ключом.

Я работаю над реляционной базой данных. Ниже приведены 3 сущности и их связь:

         1    to   *        1   to    *
Ceremony -----------> Menu ------------> CourseOption

Все работает нормально, если я обновлю церемонию, которая уже содержитMenus а такжеCourseOptions, Проблема возникает, когда мы вставляем новыйMenu а такжеCourseOption запись в церемонии во время обновления. Чем я получил вышеупомянутое исключение.

Код C # для обновления существующей церемонии

public HttpResponseMessage PutCeremony(int id, Ceremony ceremony)
{
    if (ModelState.IsValid && id == ceremony.Id)
    {
       db.Entry(ceremony).State = EntityState.Modified;

       try
       {
           db.SaveChanges();
       }
       catch (DbUpdateConcurrencyException)
       {
           return Request.CreateResponse(HttpStatusCode.NotFound);
       }

       return Request.CreateResponse(HttpStatusCode.OK, ceremony);
    }
    else
    {
       return Request.CreateResponse(HttpStatusCode.BadRequest);
    }
}

Как я могу избавиться от этой проблемы? Пожалуйста помоги

РЕДАКТИРОВАТЬ

Сегодня я провожу целый день в этом, я прочитал много статей и вопросов о stackoverflow. я нашел этоonce a product is fetched from the Context, the context is keeping track of it так что почему вместо использования:

db.Entry(ceremony).State = EntityState.Modified;

я использовал

db.Entry(db.Ceremonies.Find(ceremony.Id)).CurrentValues.SetValues(ceremony);

Теперь, сделав это изменение, исключение исчезло, и свойства объекта Ceremony изменились должным образом. Но запись меню, связанная с церемонией, и запись CourseOptions не обновляются. Пожалуйста, дайте мне предложение, ребята. Я абсолютно новый в EF.

Ответы на вопрос(1)

Ваш ответ на вопрос