2011-12-15 3 views
6

내가이 오류를 수신하기 위해 다음과 같은 방식으로 EF 업데이트를 실행하지만 계속 노력하고있어 :EntityKey 속성에만 설정할 수 있습니다

EntityKey 속성 만이 될 수 있습니다 속성의 현재 값이 null 일 때 설정됩니다.

 using (hydraEntities db = new hydraEntities()) 
     { 
      YouUser = db.youusers.Include("address").Include("entity").Include("youusercontacts.contact").Include("youuserlogins").Include("youusernotes.note").Include("youusernotes.youuser.entity").Where(yu => yu.YOUUserId.Equals(YOUUserId)).First(); 
     } 

      YouUser.entity.FirstName = txtFirstName.Text; 
      YouUser.entity.LastName = txtLastName.Text; 
      YouUser.address.AddressLine1 = txtAddressLine1.Text; 
      YouUser.address.AddressLine2 = txtAddressLine2.Text; 
      YouUser.address.City = txtCity.Text; 
      YouUser.address.State = ddlState.SelectedValue; 
      YouUser.address.Zipcode = txtZipcode.Text; 

      using (hydraEntities db = new hydraEntities()) 
      { 
       db.youusers.AddObject(YouUser); 
       db.ObjectStateManager.ChangeObjectState(YouUser, System.Data.EntityState.Modified); 
       db.SaveChanges(); 
      } 

내가이 문제를 해결하고 위의 문을 실행할 수있는 방법에 대한 통찰력을 주셔서 감사합니다 크게겠습니까.

답변

10

이 시나리오에서는 AddObject을 사용하지 마십시오. 새 엔티티를 삽입하기위한 것이지만 기존 엔티티를 업데이트하는 것입니다. 내가 추가 한 나의 시나리오에서

using (hydraEntities db = new hydraEntities()) 
{ 
    db.youusers.Attach(YouUser); 
    db.ObjectStateManager.ChangeObjectState(YouUser, System.Data.EntityState.Modified); 
    db.SaveChanges(); 
} 
0

을 다른 스레드를 통해 한 번에 여러 번 개체 : 대신 Attach를 사용합니다. 이 작업을 수행 할 때 모델 컨테이너 객체를 잠궈 야 한 번에 하나의 객체 만 처리되도록해야했습니다.

관련 문제