當我嘗試更新具有與其關聯的集合的實體時,我收到以下消息。使用實體框架更新集合時出錯
「具有相同鍵的對象已經存在於ObjectStateManager。 的ObjectStateManager不能用相同的 鍵跟蹤多個對象」。
我通過參數接收具有新屬性的實體。 Eventos有一系列Clientes,whis配有Eventos。
這是代碼:
public int Modificar(Eventos eventos)
{
try
{
DBEntities DB = new DBEntities();
Eventos objEvento =
DB.Eventos.Where(x => x.Id_evento == eventos.Id_evento)
.SingleOrDefault();
eventos.Porcentaje_Pagado = objEvento.Porcentaje_Pagado;
DB.Eventos.Attach(eventos);
DB.Eventos.ApplyCurrentValues(eventos);
DB.ObjectStateManager
.ChangeObjectState(eventos, System.Data.EntityState.Modified);
DB.SaveChanges();
return eventos.Id_evento;
}
catch (Exception)
{
throw;
}
}
的問題是,在 「連接」。
問題是什麼?
*編輯**
它的工作部分,它保存「EVENTOS」新的數據,但我得到以下錯誤,當我嘗試更新asociated到EVENTOS「Clientes」的名單。
「無法設置'Eventos _...'類型的屬性'Clientes',因爲該集合已被設置爲EntityCollection。」
錯誤符合:objEvento.Clientes = eventos.Clientes;
代碼:
DBEntities DB = new DBEntities();
Eventos objEvento = DB.Eventos.Where(x => x.Id_evento == eventos.Id_evento).SingleOrDefault();
objEvento.Porcentaje_Pagado = eventos.Porcentaje_Pagado;
objEvento.Clientes = eventos.Clientes;
DB.SaveChanges();
它的工作部分,它保存的新數據「EVENTOS」,但我得到以下錯誤,當我嘗試更新asociated到EVENTOS「Clientes」的名單。 「無法設置'Eventos _...'類型的屬性'Clientes',因爲集合已經設置爲EntityCollection。」 錯誤符合:objEvento.Clientes = eventos.Clientes; DBEntities DB = new DBEntities(); EventObjEvento = DB.Eventos.Where(x => x.Id_evento == eventos.Id_evento).SingleOrDefault(); objEvento.Porcentaje_Pagado = eventos.Porcentaje_Pagado; objEvento.Clientes = eventos.Clientes; DB.SaveChanges(); –
這裏的問題是你有一個集合,你試圖替換它,而不是在集合中添加或更新elemenet。 –
你如何更新收藏?我需要更新屬於特定「Eventos」的「Clientes」集合 –