コレクションが関連付けられているエンティティを更新しようとすると、次のメッセージが表示されます。
「同じキーを持つオブジェクトが既に 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」のリストを更新しようとすると、次のエラーが発生します。
「コレクションが既に EntityCollection に設定されているため、タイプ 'Eventos_...' のプロパティ 'Clientes' を設定できません。」
エラーは次のとおりです。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();