關於mvc5+EF里面的db.Entry(model).State = EntityState.Modified報錯問題


最近在使用mvc5+EF的的時候用到了這句話

  db.Entry(model).State = EntityState.Modified

看上去很簡單的修改數據,但是一直報錯,說是key已經存在,不能修改。

搞了很久,突發奇想的把前面的代碼

  var approvalModel = CurrentUser.ApplicationForms.SingleOrDefault(t => t.ID == id).Approval;

  if(approvalModel!=null){

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

  }

改成  

if (db.Approvals.Any(t => t.ApprovalID == model.ApprovalID))
{
db.Entry(model).State = EntityState.Modified;
}

就不報錯了。

是不是感覺很奇怪? 原因居然是approval已經取出來了,這是和數據庫有關聯,新的approval model雖然id一樣但不是同一個對象,不能修改!

或者  

var db = new CarLoanDBContext();就是換一個db對象


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM