2012-08-02 71 views
2

我有了這麼多的性能,我不希望有手工做這樣的事情如何快速更新ADO實體?

public void Update(Contact cont) 
    { 
     using (var ctx = new DatabaseEntities()) 
     { 
      var res = from n in ctx.Contacts 
          where n.ContactID == cont.ContactID 
          select n; 

      var selContact = res.First(); 
      selContact.AddressSuiteNumber = cont.AddressSuiteNumber; 
      selContact.PhoneNumber = cont.PhoneNumber; 
      /* and doing this for eeeeeeevery 40 properties */ 
      ctx.SaveChanges(); 

     } 

    } 

我試圖

selContact = cont 

無濟於事的實體。有沒有這樣的快速方法可以將Update()方法中作爲參數傳遞的實體實例中的數據複製到LINQ select中找到的實例中,然後保存它?

+0

我發現[這](http://stackoverflow.com/questions/930433/apply-properties-values-from-one-object-to-another-of-the-same-type-automaticall)任何人有任何其他想法? – 2012-08-02 14:27:44

回答

3

如果實體尚未附加到上下文,你可以嘗試將其附着並改變其狀態Modified

using (var ctx = new DatabaseEntities()) 
{ 
    ctx.Contacts.Attach(cont); 

    // Marks all properties as modified, so new values will be pushed to DB on SaveChanges 
    ctx.ObjectStateManager.ChangeObjectState(cont, System.Data.EntityState.Modified); 

    ctx.SaveChanges(); 
} 
+0

很好,謝謝。 – 2012-08-02 14:37:16