【发布时间】:2011-03-31 12:10:50
【问题描述】:
我有一个更新主从记录的操作方法。当数据第一次从视图到达控制器时,我从数据库中选择以前的记录并调用存储库的删除方法。
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 中违反了唯一键约束。违反此约束的原因是先前的记录未从数据库中删除,它只是想在其上添加另一条记录。我该如何解决这个问题
问候
【问题讨论】:
标签: sql-server asp.net-mvc linq linq-to-sql transactions