Your problem is object replacement, rather than re-assignment. When "newinv" is created, it's detached from your context, whereas "inventory" is the attached object. When "newinv" is assigned to "inventory", then it loses the association with the context.
Try this:
var prodInventory =
context.ProductInventories
.Where(pi => pi.ProductID.Equals(currentProduct))
.FirstOrDefault();
if (prodInventory != null)
{
var newinv = prodInventory.InventoryQuantity - qtyInUnits;
prodInventory.InventoryQuantity = newinv; // This updates the actual context object now.
}