2014-05-19 2 views
0

데이터베이스에서 업데이트되지 않지만 주석 처리 된 버전이 작동하는 이유는 무엇입니까?레코드 업데이트 EF 작동하지 않음

public bool InsertOrUpdateItems(Items item) 
     { 
      using (var dbContext = new MyEntities()) 
      { 
       var items = dbContext.Items.Find(item.ItemId); 
       if (items != null) 
       { 
        dbContext.Items.Attach(items); 
        dbContext.Entry(items).State = EntityState.Modified; 
        //dbContext.Entry(items).CurrentValues.SetValues(item); 
        dbContext.SaveChanges(); 
       } 

가 슬로우되는 예외 없다, 그냥 업데이 트를 실 거예요. 기록이 발견 되더라도.

+0

간단한 속성이나 더 큰 객체 그래프의 일부를 업데이트하지 않습니까? – Josh

+0

간단한 값 변경 - 전달되는 'item'변수에 변경 사항이 반영되었습니다. – user1307149

답변

0

해당 줄이 주석 처리 된 경우 업데이트 할 새 값이 없습니다. 당신이 알 수 있습니다 :

  1. 가져가 DB에서 items라는 이름의 객체
  2. 당신은 통과 같은 items

객체를 저장하려고

  • (가 기본적으로 장착되어 있지만) 당신은 그것을 첨부 InsertOrUpdateItems 메서드 (item)에 대한 매개 변수로 사용하는 코드에서 Find()를 사용하여 해당 ID를 읽는 것을 제외하고는

  • +0

    주석 처리 된 행이 작동하지만 해결 방법으로 CurrentValues ​​속성을 사용한 적이 없습니다. – user1307149

    +0

    OK, 코드의 첫 번째 줄에서 객체'item'을 어디에서 사용합니까? 주석 처리 된 행을 제외하고는 아무데도 없습니다. 그것이이 줄에서만 작동하는 이유입니다. – SoftwareFactor

    +0

    그래, 지금 확인해 보겠습니다. – user1307149

    관련 문제