2011-12-15 16 views
6

ben bu hatayı almaya aşağıdaki şekilde bir EF güncelleştirme yürütmek ama devam etmeye çalışıyorum:EntityKey özellik yalnızca ayarlanabilir

EntityKey özelliği sadece olabilir Özelliğin geçerli değeri boş olduğunda ayarla.

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

bunu düzeltmek ve yukarıdaki ifadeyi yürütebileceği konusunda herhangi bir fikir takdir ölçüde ederim.

cevap

10

Bu senaryoda AddObject kullanmayın. Yeni bir varlık eklemek içindir ancak mevcut olanı güncelliyorsunuz. Ben ekleyerek benim senaryoda

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

farklı dizileri arasında tek seferde birkaç kez nesneleri: yerine Attach kullanın. Bunu yaparken sadece bir nesnenin aynı anda işlenmesini sağlamak için Model Container nesnesini kilitlemeliydim.

İlgili konular