Jak zaktualizować relacyjne bazy danych TABELS?

Używam Entity Framework 4.0. Mam problem z aktualizacją danych w bazie danych. Otrzymuję ten wyjątek:

Obiekt z tym samym kluczem już istnieje w ObjectStateManager.
ObjectStateManager nie może śledzić wielu obiektów za pomocą tego samego klucza.

Pracuję nad relacyjną bazą danych. Poniżej znajdują się 3 podmioty i relacja:

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

Wszystko działa dobrze, jeśli zaktualizuję ceremonię, która już zawieraMenus iCourseOptions. Problem pojawia się, gdy wstawiamy nowyMenu iCourseOption wejście na ceremonię w momencie aktualizacji. Potem otrzymałem wspomniany powyżej wyjątek.

Kod C #, aby zaktualizować istniejącą ceremonię

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);
    }
}

Jak mogę pozbyć się tego problemu? Proszę pomóż

EDYTOWAĆ

Dzisiaj spędzam w tym cały dzień, czytam wiele pytań dotyczących artykulacji i stackoverflow. znalazłem toonce a product is fetched from the Context, the context is keeping track of it więc dlaczego zamiast:

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

użyłem

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

Teraz, wykonując tę ​​zmianę, wyjątek i właściwości obiektu ceremonii zmieniają się prawidłowo. Ale pozycja menu związana z ceremonią i wpis CourseOptions nie są aktualizowane. Proszę dać mi sugestie. Jestem całkowicie nowy w EF.

questionAnswers(1)

yourAnswerToTheQuestion