EF 多线程多表更新的问题
有个需求需要定时接收数据,然后插入或更新到数据库。
代码如下:
//业务方法
void InsertLog(string gameId, string sellerName, string buyerName, string orderId, string orderTime, string orderLog)
LogBll.CreatInStance().SaveLogInfo(logInfo, orderInfo, updateOrderType, isOperatorOrder, orderJobInfo); //调用保存数据方法
///保存数据
public int AddObjects(LogInfo logInfo, OrderInfo orderInfo, UpdateOrderType updateOrderType, bool isOperatorOrder, OrderJobInfo orderJobInfo)
{
OrderInfo oldOrderInfo = Logistics.Data.Common.IOC.CommonService.OrderService.GetOrderInfo(orderInfo.OrderId);
if (oldOrderInfo == null)
{
Context.OrderInfo.Add(orderInfo);
}
else if (oldOrderInfo.OrderState != orderInfo.OrderState)
{
Context.OrderInfo.Attach(orderInfo);
Context.Entry(orderInfo).State = EntityState.Modified;
}
if (isOperatorOrder) Context.OrderJobInfo.Add(orderJobInfo);
LogInfo log = Logistics.Data.Common.IOC.CommonService.LogService.GetLogInfo(logInfo.Id);
if (log == null)
Context.LogInfo.Add(logInfo);
return Context.SaveChanges();
}
[解决办法]
1、事务是否是在循环内声明的。如是的话应修改。
2、弄清楚约束 'PK_OrderInfo'这个约束是对应的什么字段。然后用公共变量来解决这个问题。