当我尝试更新具有与其关联的集合的实体时,我收到以下消息。
“ObjectStateManager 中已存在具有相同键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象。”
我通过参数接收具有新属性的实体。Eventos 有一个 Clientes 集合,它是 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”的新数据,但是当我尝试更新与 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();