グリッド内のレコードを編集する機能があり、このグリッドのデータがデータベースから取得され、1つの列のみが編集可能です。編集したレコードに基づいて自分のデータベースでこのレコードを編集しようとすると、私がユニークキーに違反しているというエラーが表示されます。編集可能な列は一意でもキーでもなく、BinLocation_Item item
の値はデータベースの値と一致します。DbUpdateExceptionユニークキーの違反
編集:この問題の原因となっているWHERE BatchId IS NULL
ではなく、を使用してアプリケーションを削除しようとしているようです。
エラー:
System.Data.Entity.Infrastructure.DbUpdateException: 'An error occurred while updating the entries. See the inner exception for details.'
SqlException: Violation of UNIQUE KEY constraint 'UC_BIB'. Cannot insert duplicate key in object 'dbo.BinLocation_Item'. The duplicate key value is (3, 9642, NULL).
コード:
public ActionResult submitLocItem(BinLocationItemModel lines, int? PID, int? LineNum)
{
dbEntity.Configuration.ProxyCreationEnabled = false;
BinLocation_Item item = dbEntity.BinLocation_Item.Where(i => i.BinLocationId == lines.BinLocationId && i.ItemId == lines.ItemId && i.BatchId == lines.BatchID).FirstOrDefault();
PickListLine picklistline = dbEntity.PickListLine.Where(i => i.PickID == PID && i.LineNum == LineNum).FirstOrDefault();
picklistline.PickedQuantity = picklistline.PickedQuantity + lines.PickedStock;
item.StockAvailable = lines.StockAvailable - lines.PickedStock;
dbEntity.Entry(item).State = System.Data.Entity.EntityState.Modified;
dbEntity.SaveChanges();
return View();
}
このエラーは、データベースに存在する主キーと同じ主キーを持つ項目を追加しようとしていることを示しています。また、重複するキー値(3,9642、NULL)も表示されます。 – gh9
私は新しいレコードを挿入するのではなく、レコードを更新しようとしていますが、現時点で私のコードが新しい行を挿入しようとしているようです。どのようにして私の記録を正しく更新することができますか? – Alim
3つの列に対して一意のキーが定義されているので、このエラーが発生していると思います。これらの列には値が「3.3642、NULL」の組み合わせがあり、更新操作の一部として更新された行は同じ値それらの列の組み合わせ。 –