2016-05-13 106 views
0

你好我嘗試更新操作,但在更新它顯示接近分貝的錯誤。保存更改()。「PRIMARY KEY約束‘PK__UserRights__0155B971’。違反無法插入對象‘dbo.UserRights’重複鍵。錯誤

其示出了誤差提下面

類型「System.Data.Entity.Infrastructure.DbUpdateException」的一個例外發生在EntityFramework.dll但在用戶代碼

所以我在內部異常搜索沒有處理它顯示下面提到的錯誤:

「違反PRIMARY KEY約束'PK__UserRights__0155B971'。 。不能插入對象 'dbo.UserRights' 重複鍵\ r \ n此語句已終止「}

我的控制器代碼

public ActionResult UsetBasedAuthenticationEditSave(UserAuthenticationViewModel objuavm) 
    { 
     ViewBag.UserID = new SelectList(db.UserDetails, "UserID", "UserName", objuavm.UserID); 
     ViewBag.ModuleID = new SelectList(db.UserModules, "ModuleID", "ModuleName", objuavm.ModuleID); 
     ViewBag.SubModule = new SelectList(db.UserModules, "SubModule", "SubModule", objuavm.SubModule); 

     var objuserrightsresult = db.UserRights.Find(objuavm.UserRitsID); 
     if(objuserrightsresult!=null) 
     { 
      objuserrightsresult.UserID = objuavm.UserID; 
      objuserrightsresult. ModuleID = objuavm.ModuleID; 
      objuserrightsresult. Toview = Convert.ToBoolean(objuavm.Toview); 
      objuserrightsresult. ToAdd = Convert.ToBoolean(objuavm.ToAdd); 
      objuserrightsresult. ToEdit = Convert.ToBoolean(objuavm.ToEdit); 
      objuserrightsresult. ToDelete = Convert.ToBoolean(objuavm.ToDelete); 
      objuserrightsresult.IsActive = Convert.ToBoolean(objuavm.IsActive); 
      objuserrightsresult.IsDeleted = Convert.ToBoolean(objuavm.IsDeleted); 
      objuserrightsresult. EditedDate = DateTime.Now; 
      objuserrightsresult. LastActiveOn = DateTime.Now; 
      objuserrightsresult. RowID = Guid.NewGuid(); 
      objuserrightsresult. CreatedSeesionID = Guid.NewGuid(); 
      objuserrightsresult. EditedSessionID = Guid.NewGuid(); 
      objuserrightsresult. OfflineMode = false; 
      objuserrightsresult.OfflineID = Guid.NewGuid(); 
      objuserrightsresult.SubModule = objuavm.SubModule; 
      db.UserRights.Add(objuserrightsresult); 
      } 
     db.SaveChanges(); 
     return RedirectToAction("UserBasedAuthenticationIndex"); 
    } 
+0

您添加一個現有的實體,你只需要更新它(刪除行'db.Use rRights.Add(objuserrightsresult);') –

+0

ok stephen讓我試試 – Susan

+0

Stephen的工作可以讓你解釋我做了什麼錯誤 – Susan

回答

2

評論這條線:

//db.UserRights.Add(objuserrightsresult); 

既然你正在進行更新,你不應該再次添加它...只是更新字段值,然後只是調用db.SaveChanges();

+0

mhm現在我明白了rosdi kasim謝謝你:D – Susan

相關問題