0

所以我的設置如下: SupportTicket - 包含名爲Messages的SupportTicketMessags列表。 SupportTicketMessage - 包含用戶配置和消息嘗試更新實體列表

我想一個SupportTicketMessage添加到我用下面的方法已有SupportTicket名單:

public void AddReply(string message, UserProfile author) 
{ 
    using (ContextDb db = new ContextDb()) 
    { 
     SupportTicketMessage msg = new SupportTicketMessage(author, message); 
     Messages.Add(msg); 
     db.UserProfiles.Attach(Owner); 
     db.Entry(this).State = EntityState.Modified; 
     db.SaveChanges(); 
    } 
} 

然而,每當我試圖做到這一點我得到的以下錯誤:

ObjectStateManager中已存在具有相同鍵的對象。 ObjectStateManager不能使用同一個鍵跟蹤多個對象。

在下面一行:

db.Entry(this).State = EntityState.Modified; 

概括起來: 我加入的對象列表,並會喜歡的對象被保存到數據庫中。 我該怎麼做?

+2

你爲什麼明確改變狀態? –

+0

@Cam Bruce 那麼我已經添加了一個元素到列表中,所以我希望它更新 –

+0

我只是在尋找一個解決方案 - 我已經更新了這個問題。 –

回答

1

您不必顯式更改對象的狀態。實體框架會自動爲你做這件事。

+0

你究竟是什麼意思?我如何將列表的元素添加到數據庫? –

+0

將它添加到數據庫表集合中,像這樣:'db.SupportTicketMessages.Add(msg);',然後調用'Save()'方法。 –

+0

但是,如何將它添加到SupportTicket中的列表呢?我的意思是它會被添加到數據庫 - 當然 - 但它不會被包含在列表中 –