Cannot insert explicit value for identity column in table 'Designator' when IDENTITY_INSERT is set to OFF
Iは、機器エンティティと指示エンティティを持っています。私は新しい機器エンティティを作成し、機器のDESIGNATORプロパティをデータベースの既存の指定子に設定しています。
問題は、新しい機器をデータベースに挿入しようとするときに、新しいDESIGNATORを挿入しようとしていると思います。私のクライアント側のページには、DESIGNATORエンティティの選択可能なリストがあります。もちろん、これらのエンティティはデータベースのプライマリキーを持っています。しかし、クライアント側で私のEQUIPMENTエンティティのDESIGNATORナビゲーションプロパティを設定し、これをサーバにポストすると、DESIGNATORが新しいものであるため、プライマリキーが割り当てられない(したがってエラーが発生する)と考えられます。
以前のエンティティフレームワークバージョンを使用していたときに、これが起こっていなかったことはかなり確信しています。
[HttpPost]
public IActionResult PostEquipment([FromBody] Equipment equipment)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
if (EquipmentExists(equipment.EquipmentId))
{
_context.Entry(equipment).State = EntityState.Modified;
}
else//updating
{
_context.Equipments.Add(equipment);
}
try
{
_context.SaveChanges();
}
catch (DbUpdateException)
{
if (EquipmentExists(equipment.EquipmentId))
{
return new StatusCodeResult(StatusCodes.Status409Conflict);
}
else
{
throw;
}
}
return Ok(equipment);
}
ありがとう。
残念ながら、保存する前にナビゲーションプロパティをクリアしないでください。 – Will
Equipmentクラスのようなモデル定義と、サーバーに送信する前に新しいEquipment Objectを作成する方法を教えてください。 –