2011-12-15 34 views
6

que estoy tratando de ejecutar una actualización de EF de la siguiente manera, pero continuará recibiendo este error:La propiedad EntityKey sólo se puede ajustar cuando el valor actual de la propiedad es nulo

La propiedad EntityKey sólo puede haber establecer cuando el valor actual de la propiedad es nulo.

 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(); 
      } 

agradecería mucho alguna idea sobre cómo puedo solucionar este problema y ejecutar la instrucción anterior.

Respuesta

10

No utilice AddObject en este escenario. Es para insertar una nueva entidad pero está actualizando la existente. Utilice Attach lugar:

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

En mi escenario estaba añadiendo objetos varias veces a la vez a través de diferentes temas. Tuve que bloquear el objeto Model Container al hacer esto, para asegurarme de que solo se procesaría un objeto a la vez.

Cuestiones relacionadas