Не удалось подключить объект типа, поскольку другой объект того же типа уже имеет то же значение первичного ключа.

Позвольте мне быстро описать мою проблему.

я имею5 баз данных на 5 клиентов икаждый из них имеет одну и ту же таблицу с именем SubnetSettings.

Я уже создал выпадающий список для выбора клиента и покажет таблицу SubnetSetting, которая принадлежит выбранному клиенту и позволит мне создавать, редактировать и удалять.

Я могу создавать, удалять без проблем, нокогда я хочу редактировать данные, это приводит к ошибке:

Ошибка сервера в приложении «/ TMS».

Не удалось подключить объект типа «CFS.Domain.Entities.SubnetSettings», поскольку другой объект того же типа уже имеет такое же значение первичного ключа. Это может произойти при использовании метода «Присоединить» или установке состояния объекта на «Неизменено» или «Изменено», если какие-либо объекты в графе имеют конфликтующие значения ключей. Это может быть потому, что некоторые объекты являются новыми и еще не получили сгенерированные базой данных значения ключей. В этом случае используйте метод «Добавить» или «Состояние добавленной» сущности для отслеживания графика, а затем установите состояние не новых сущностей в «Неизмененные» или «Измененные», в зависимости от ситуации.

Вот мой Edit в моем контроллере

    // GET: /SubnetSettings/Edit1/5   
    public ActionResult Edit1(short? id)  
    {
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        SubnetSettings subnetsettings = detailView.SubnetSettings.SingleOrDefault(t => t.Id == id); 
        if (subnetsettings == null)
        {
            return HttpNotFound();
        } 
        return View(subnetsettings);
    }


    // POST: /SubnetSettings/Edit1/5   
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Edit1([Bind(Include = "Id,Name,fDialUp,fPulse,fUseExternalGSMModem,fGsmDialUp,bUploadMethodId")] SubnetSettings subnetsettings)
    {
        if (ModelState.IsValid)
            {
                templateDb2.Save(subnetsettings);   
                return RedirectToAction("Index");
            }
        return View(subnetsettings);
    }

Вот метод Сохранить в EF

     public SubnetSettings Save(SubnetSettings subnetsettings) {

     if (subnetsettings.Id == 0){                        
         context.SubnetSettings.Add(subnetsettings);
     }
     else {

         context.SubnetSettings.Attach(subnetsettings);               
         context.Entry(subnetsettings).State = EntityState.Modified; 
     }
        context.SaveChanges();
        return subnetsettings;
    }

Я знаю, что трудно понять код других людей. Поэтому любая рекомендация или предложение очень благодарны.

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

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