2016-05-31 6 views
1

json 응답에서 엔터티 프레임 워크로 데이터베이스를 채울 때가 있습니다. 이제 기존 값을 업데이트해야합니다. 이미 존재하는 경우 추가해야합니다. 따라서 미팅 ID가 존재하면 업데이트 참석자가 추가합니다.EF로 db의 특정 열을 업데이트하는 방법

내 추가 방법이 corectlly로 작동하지만 내 값을 업데이트하는 방법을 모르겠습니다. 여기

내 코드입니다 :

foreach (Event eventItem in obj.events) 
{           
    using (Entities1 ctx = new Entities1()) 
    { 
     Event1 sas = new Event1 
     { 
      // ID= autoincr 
      // some custom values 


      MeetingID=eventItem.eventId 
      //Values to update        
      Attending=eventItem.attendingCount 

     };   
      ctx.Event1.Add(sas); 
      ctx.SaveChanges(); 

    } 

} 

답변

2

아르가 존재하는 경우에는 DB에서 엔티티를 얻어야한다 : 또한

using (Entities1 ctx = new Entities1()) 
{ 
    foreach (Event eventItem in obj.events) 
    {           
     var ev = ctx.Event1.FirstOrDefault(x=>x.eventId == eventItem.eventId); //get your entity from db (maby you should use other ID) 
     if(ev == null) //If have no elements add 
     { 
      Event1 sas = new Event1 
      { 
       // ID= autoincr 
       // some custom values 
       MeetingID=eventItem.eventId, 
       //Values to update        
       Attending=eventItem.attendingCount 
      };   
      ctx.Event1.Add(sas); 
     } 
     else // Else just update 
     { 
      ev.Attending = eventItem.attendingCount; 
     } 
    } 
    ctx.SaveChanges(); 
} 

- 난의 전체 평화를 포장 있도록 각 개체에 대한 컨텍스트를 생성하지 낫다 컨텍스트에서 코드. 이렇게하면 모든 변경 사항이 하나의 트랜잭션으로 처리됩니다.

+0

고맙습니다. –

1

Upsert를 시도하는 항목이 신규/기존 항목인지 확인하는 경우. 이것이 올바른 코드입니다.

훨씬 적은 데이터베이스 호출로 작업을 수행 할 수 있으므로 훨씬 빠른 트랜잭션이 가능합니다.

using(var ctx = new Context()) 
{ 
    foreach (Event eventItem in obj.events) 
    {           

     Event1 sas = new Event1 
     { 
      // ID= autoincr 
      // some custom values 


      MeetingID=eventItem.eventId 
      //Values to update        
      Attending=eventItem.attendingCount 

     }; 
     if(eventItem.eventId != null) 
     {   
       ctx.Event1.Add(sas); 
     } 
     else 
     { 
       ctx.Entry(sas).State = EntityState.Updated; 
     } 
    } 
    ctx.SaveChanges(); 
} 
관련 문제