Make sure your naming conventions in your db is exactly the same as on the server. I might be wrong but looking over your code the only place I can see that it will update wrong is
using (var contextDb = new AllVetMedDbEntities())
{
It might be that the data is not updating in the db as it is not the same or does not comply with the same naming as on your pc (in debug)
_________________________EDIT______________________________________________
Also just have a look at the code in linq there is a duplicate
contextDb.SaveChanges();
bFlag = true;
contextDb.SaveChanges();
bFlag = true;
You also never use the linq query...
var query = (from Item in contextDb.ShoppingCartItems
where Item.Id == ProductItem.Id
select Item).SingleOrDefault();
But I do gather that you probably meant to do this...
var query = (from Item in contextDb.ShoppingCartItems
where Item.Id == ProductItem.Id
select Item).SingleOrDefault();
var original = contextDb.ShoppingCartItems.Find(query.Id);