2013-09-16 274 views
1

我剛開始使用實體,到目前爲止,它使我的生活變得更加簡單。但是,當我嘗試更新一行時,這是我遇到問題的地方。谷歌搜索把我帶到了Attach(),而我已經試過:數據庫沒有更新

public void Update() 
{ 
    using (var context = new HDDCContainer()) 
    { 
     context.Projects.Attach(this); 
     context.SaveChanges(); 
    } 
} 

這是在我的項目類中的方法。

但是,在查詢我的數據庫後,我發現它實際上沒有更新。我從此沒有任何錯誤或例外。當我走過時,我可以看到我所做項目的變化。

+0

讓我們使用保存實體... –

回答

2

你需要告訴你剛纔附着對象的狀態已經與在數據庫中的值比較,改變實體框架的工作,你只需修改條目下面的狀態:

  db.Favorites.Attach(favorite); 
      var ent = db.Entry(favorite); 
      ent.State = EntityState.Modified; 
      db.SaveChanges(); 

有無以前它讓我知道

+0

給了這一去,它的工作。謝謝。 – MyCodeSucks

+0

很好聽,沒問題 –

2

您必須在附加後對實體進行更改。

例如

context.Projects.Attach(project); 

project.Name = "New Funky Name"; 

context.SaveChanges(); 

如果實體被修改外保存/更新方法按您的例子,則可能的狀態需要手動標誌。

context.Projects.Attach(project); 
DbEntityEntry entry = context.Entry(day);  // Gets the entity Entry instance 
entry.Property("Name").IsModified = true;  // Individual property modified 
entry.State = System.Data.EntityState.Modified; // or Entire object modified 
+0

阿的完整代碼...這是有道理的! – MyCodeSucks