У меня есть метод действия для обновления основной записи. когда данные впервые достигают представления от контроллера, я выбираю предыдущие записи из базы данных и вызываю метод удаления хранилища.
public ActionResult sale(int id, SaleRecord _SaleRecord,int? PositionID)
{
SalesRepository _SalesRepository = new SalesRepository();
if (ModelState.IsValid)
{
List<long> prevSaleIDs = _SaleRecord.Items.Where(y => y.ActualSaleID > 0).Select(x => x.ActualSaleID).Distinct().ToList();
foreach (var SaleID in prevSaleIDs)
{
var dbData = _SalesRepository.GetSale(SaleID);
_SalesRepository.DeleteSaleItems(dbData.mktActualSaleItems.ToList());
_SalesRepository.DeleteActualSales(dbData);
}
-----
-----
}
после помещения записей для удаления я готовлю новую запись, вызывая updateModel и помещая ее для вставки
public ActionResult sale(int id, SaleRecord _SaleRecord, int? PositionID)
{
//as above
mktActualSale _Sales = new mktActualSale();
UpdateModel(_Sales, "_SaleRecord");
_Sales.mktActualSaleItems.AddRange(_SaleRecord.Items.Where(z => z.SalesQuantity != 0).Select(x => new mktActualSaleItem { SalesQuantity = x.SalesQuantity, SKUID = x.SKUID }));
_SalesRepository.Add(_Sales);
_SalesRepository.Save();
}
но когда вызывается save, я получаю исключение, сообщающее, что ограничение уникального ключа нарушено в db. Причиной нарушения этого ограничения является то, что предыдущая запись не удаляется из базы данных, а просто хочет добавить еще одну запись поверх нее. Как я могу решить эту проблему
С уважением