public bool UpdateItem(string newSku, int userId, string sku, int qty, int salesTerritory, bool isExistNew, Model.Product.ProductSkuEntity entity) { var sqlDel = @"DELETE FROM [ShoppingCart] WHERE UserId=@UserId AND Sku=@sku and (CountryId=@CountryId or CountryId=3) "; var sqlUpdate = @" update [ShoppingCart] SET Sku = @NewSku , [LastTime] = GETDATE() , [Quantity] = {0} @Quantity, UnitPrice=@UnitPrice, TaxRate=@TaxRate WHERE UserId=@UserId AND Sku=@Sku AND ( CountryId=@CountryId or CountryId=3 ) "; sqlUpdate = string.Format(sqlUpdate, isExistNew ? " Quantity +" : ""); if (!isExistNew) { try { var parametersUpdate = DbSFO2OMain.CreateParameterCollection(); parametersUpdate.Append("@NewSku", newSku); parametersUpdate.Append("@Quantity", qty); parametersUpdate.Append("@Sku", sku); parametersUpdate.Append("@UserId", userId); parametersUpdate.Append("@CountryId", salesTerritory); parametersUpdate.Append("@UnitPrice", entity.Price); parametersUpdate.Append("@TaxRate", entity.TaxRate); var result = DbSFO2OMain.ExecuteSqlNonQuery(sqlUpdate, parametersUpdate); return(result > 0); } catch (Exception ex) { LogHelper.Error(ex); return(false); } } //已存在新的 using (var con = DbSFO2OMain.CreateConnection()) { con.Open(); var trans = con.BeginTransaction(); try { var parametersDel = DbSFO2OMain.CreateParameterCollection(); parametersDel.Append("@UserId", userId); parametersDel.Append("@CountryId", salesTerritory); parametersDel.Append("@Sku", sku); var parametersUpdate = DbSFO2OMain.CreateParameterCollection(); parametersUpdate.Append("@NewSku", newSku); parametersUpdate.Append("@Quantity", qty); parametersUpdate.Append("@Sku", newSku); parametersUpdate.Append("@UserId", userId); parametersUpdate.Append("@CountryId", salesTerritory); parametersUpdate.Append("@UnitPrice", entity.Price); parametersUpdate.Append("@TaxRate", entity.TaxRate); var delete = DbSFO2OMain.ExecuteSqlNonQuery(sqlDel, parametersDel, trans); var result = DbSFO2OMain.ExecuteSqlNonQuery(sqlUpdate, parametersUpdate, trans); if (delete > 0 && result > 0) { trans.Commit(); return(true); } else { trans.Rollback(); return(false); } } catch (Exception ex) { LogHelper.Error(ex); trans.Rollback(); return(false); } } }