有个需求需要定时接收数据,然后插入或更新到数据库。
代码如下:
//业务方法
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();
}
代码如下:
//业务方法
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();
}
解决方案 »
- DateView控件连接Mysql数据库遇到的怪问题
- asp.net 客户端脚本调用服务端方法
- 根据Textbox输入数据,点击Button,查询数据结果显示在Gridview中(三层框架下)
- 关于GetPreloadedEntityBody在vs2008中为null的问题,请高手解决
- asp.net应用c#接口技术
- ASP.NET Forums 怎么清理缓存
- (求助)用ASP.NET如何读取客户端的真实IP地址
- 为什么没有自动提示?????/
- 这个问题怎么解决(大家帮帮忙)
- 关于asp.net页面事务的处理
- C#读取USB设备并建立连接应该怎么写
- 在线等!html中需要点击两次“返回上一页”按钮,才能实现返回上一页
System.Threading.Thread aThread2 = new Thread(new ThreadStart(Test));
aThread1.Start();
aThread2.Start();public void Test()
{
var gameId = "f44eb447e7e049c38eb13dc962f72a68";
var sellerName = "冰";
var buyerName = "test11";
var orderNo = DateTime.Now.ToString("yyyyMMddHHmmssff");
var orderTime = DateTime.Now.ToString();
var orderLog = "0"; for (int i = 1; i < 15; i++)
{
if (i == 13) orderLog = "400";
else if (i == 14) orderLog = "500";
else orderLog = (Convert.ToInt32(orderLog) + 10).ToString();
orderTime = DateTime.Now.AddHours(1).AddMinutes(1).AddSeconds(1).AddMilliseconds(1).ToString();
Logistics.Data.ReceiveData.HandlerLog handlerLog = new HandlerLog();
handlerLog.InsertLog(gameId, sellerName, buyerName, orderNo, orderTime, orderLog);
}
}上面的方法 单线程操作一点问题都没有。 但如果aThread1 aThread2 都运行就出现如下问题:
1.如果分配给命令的连接位于本地挂起事务中,ExecuteNonQuery 要求命令拥有事务。命令的 Transaction 属性尚未初始化。
2.违反了 PRIMARY KEY 约束 'PK_OrderInfo'。不能在对象 'dbo.OrderInfo' 中插入重复键。求大虾们指导,求解决方案
2、弄清楚约束 'PK_OrderInfo'这个约束是对应的什么字段。然后用公共变量来解决这个问题。