Вы добавили новый Product
со значениями по умолчанию для всех свойств bool (false). Затем вы устанавливаете одно из этих значений false. Не удивительно, что это не обновляет; Вы фактически не изменили это! Мне кажется, вы могли бы решить эту проблему, удалив часть кода:
public void UpdateProduct(Product updatedProduct)
{
using (model)
{
Product originalProduct = model.Products.Single(p => p.ProductID == updatedProduct.ProductID);
model.Products.ApplyCurrentValues(updatedProduct);
model.SaveChanges();
}
}
Даже если вам это не нравится, попробуйте и посмотрите, работает ли оно.
Теперь мне кажется, что вы пытаетесь избежать загрузки продукта в первую очередь. Но это сломало ваш код. Поэтому, хотя я и задаюсь вопросом, пытаясь «оптимизировать» обновление (вы загружаете одну запись здесь, а обновления происходят гораздо реже, чем выбирает), давайте согласимся начать с чего-то, что работает.
Если это работает, он говорит вам, что вам нужно делать, если вы настаиваете на том, чтобы не загружать продукт для обновления: вам нужно пометить все свойства как измененные .