public MessageLocal saveOrUpdatePurchaseOrder(Order order) { MessageLocal msg = new MessageLocal(); SqlConnection con = SessionFactory.getConnection(); SqlTransaction sqlTran = con.BeginTransaction(IsolationLevel.RepeatableRead); LinkedList <SqlParameter> prams = new LinkedList <SqlParameter>(); try { if ("".Equals(order.Sn)) { order.Sn = constructSN(sqlTran); } msg = baseDao.runProcedureTran("saveOrUpdate_order", constructParamsForOrder(order), "order", sqlTran); if (!msg.IsSucess) { throw new Exception(msg.Message); } if (order.Id < 0) { DataSet dataset = database.RunProcReturnTran("SELECT id FROM tb_order WHERE sn = '" + order.Sn + "'", "tb_order", CommandType.Text, sqlTran); if (null != dataset && dataset.Tables[0].Rows.Count > 0) { order.Id = int.Parse(getValue(dataset, "id")); } else { throw new Exception("查询订单编号【" + order.Sn + "】失败!"); } } foreach (OrderItem item in order.OrderItems) { msg = baseDao.runProcedureTran("saveOrUpdate_order_item", constructParamsForOrderItem(item), "order_item", sqlTran); if (!msg.IsSucess) { throw new Exception(msg.Message); } item.Id = int.Parse(msg.Message); } foreach (OrderStats stats in order.OrderStats) { msg = baseDao.runProcedureTran("saveOrUpdate_order_stats", constructParamsForOrderStats(stats), "order_stats", sqlTran); if (!msg.IsSucess) { throw new Exception(msg.Message); } stats.Id = int.Parse(msg.Message); } sqlTran.Commit(); }catch (Exception e) { sqlTran.Rollback(); msg.Message = "保存失败!" + e.Message; msg.IsSucess = false; Console.WriteLine(e.StackTrace); return(msg); }finally { con.Close(); } msg.IsSucess = true; return(msg); }