日期:2014-05-17  浏览次数:20487 次

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'这个约束是对应的什么字段。然后用公共变量来解决这个问题。