相关疑难解决方法(0)

附加类型的实体失败,因为相同类型的另一个实体已具有相同的主键值.

让我快速描述我的问题.

我有5个客户的5个数据库,每个数据库都有一个名为SubnetSettings的表.

我已经创建了一个下拉列表来选择一个客户,并将显示属于所选客户的SubnetSetting表,并允许我创建,编辑和删除.

我可以创建,删除没有问题,但当我想编辑数据时,它会带来错误:

'/ TMS'应用程序中的服务器错误.

附加"CFS.Domain.Entities.SubnetSettings"类型的实体失败,因为同一类型的另一个实体已具有相同的主键值.如果图中的任何实体具有冲突的键值,则在使用"附加"方法或将实体的状态设置为"未更改"或"已修改"时,可能会发生这种情况.这可能是因为某些实体是新的并且尚未收到数据库生成的键值.在这种情况下,使用"添加"方法或"已添加"实体状态来跟踪图形,然后根据需要将非新实体的状态设置为"未更改"或"已修改".

这是我的控制器中的编辑

    // 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);
    }
Run Code Online (Sandbox Code Playgroud)

这是EF中的Save方法

     public SubnetSettings Save(SubnetSettings …
Run Code Online (Sandbox Code Playgroud)

c# model-view-controller entity-framework primary-key

6
推荐指数
1
解决办法
2万
查看次数