1
私は私ParticipantList
(イベントIDとUSERID)に行を追加イベントID私のモデル内の1つのフィールドを更新中のトラブル
を受け入れる私のWeb APIアクションAddParticipant
を持っているを持つ
私はインクリメントしたかったです私のEvents
モデルの単一フィールドはParticipantList
です。しかし、私はタイプ'xx.Models.Event'
のエンティティをアタッチ」
エラーを取得しています、同じタイプの別のエンティティが既に同じ
primary key
値を持っているために失敗しました。これは、 『アタッチ』メソッドを使用するか、状態を設定するときに発生する可能性がありますグラフ内のエンティティのキー値が競合している場合、エンティティの「変更なし」または「変更済み」に変更することができます。
これにはどのような回避策がありますか?
public IHttpActionResult AddParticipant(int id)
{
var Participant = new ParticipantList
{
EventId = id,
ParticipantId = base.ControllerContext.RequestContext.Principal.Identity.GetUserId()
};
db.ParticipantList.Add(Participant);
db.SaveChanges();
var eventupdated = new Event()
{
Id = id,
ParticipantCount = db.Events.Find(id).ParticipantCount++
};
using (db)
{
db.Events.Attach(eventupdated);
db.Entry(eventupdated).Property(x => x.ParticipantCount).IsModified = true;
db.SaveChanges();
}
return Ok();
}
次のコードで
を交換してみてください。なぜ単に 'var event = db.Events.Find(id);ではありません。 event.ParticipantCount ++ ';それを保存しますか? –