System.Data.Linq.ChangeConflictException: 2 的 1 更新失败
用linq to sql 更新订单主表和订单明细,
提交 SubmitChanges 时报错 System.Data.Linq.ChangeConflictException: 2 的 1 更新失败
线上环境。不是必然报错的,99%的订单不会报错,只有不到1%的订单偶然报错异常。
代码如下
public string OutUpdateOrder(JobOrder order)
{
string msg = string.Empty;
try
{
using (DatabaseDataContext context = new DatabaseDataContext())
{
var db = context.Orders.SingleOrDefault(p => p.OrderID == order.OrderID);
if (db != null)
{
db.GeneratedTicketStatus = order.GeneratedTicketStatus;
db.GeneratedTicketTime = DateTime.Now;
db.RefundStatus = order.RefundStatus;
db.RefundTotalPrice = order.RefundTotalPrice;
db.Remark = order.Remark;
var orderItems = context.OrderItems.Where(p => p.OrderID == order.OrderID);
foreach (var dbItem in orderItems)
{
var item = order.OrderItemList.SingleOrDefault(p => p.ItemID == dbItem.ItemID);
if (item != null)
{
dbItem.SeatNO = item.Seatno;
dbItem.TicketID = item.TicketID;
dbItem.TicketNumber = item.TicketNumber;
dbItem.TicketPicture = item.TicketPicture;
dbItem.RefundStatus = item.RefundStatus;
dbItem.RefundPrice = item.RefundPrice;
}
}
context.SubmitChanges();
}
}
}
catch (Exception exp)
{
msg = "OutTicketUpdateOrder异常:" + exp.ToString();
}
return msg;
}