EF не обновляет определенный объект в SaveChanges

66
11

У меня очень странная ошибка, которая, похоже, происходит только в определенном элементе, который я пытаюсь обновить в БД, используя сущность framework.


Вот мой код:


var shoppingCartItem = GetShoppingCartItemById(shoppingCartItemId);
shoppingCartItem.Quantity = newQuantity;
_context.SaveChanges();

и это метод, который получает элемент из БД перед обновлением:


public ShoppingCartItem GetShoppingCartItemById(int shoppingCartItemId)
{
if (shoppingCartItemId == 0)
return null;

var query = from sci in _context.ShoppingCartItems
where sci.ShoppingCartItemId == shoppingCartItemId
select sci;
var shoppingCartItem = query.SingleOrDefault();
return shoppingCartItem;
}


Этот код работает с некоторыми элементами, но не с конкретным, с которым я сейчас тестирую. Если я проверю состояние объекта (с помощью _context.ObjectStateManager.GetObjectStateEntry(shoppingCartItem)) после изменения свойства Quantity it Unchanged: (


Неужели это случается с кем-то из вас? Любая идея, почему это происходит, или что может быть причиной этого?

спросил(а) 2021-01-19T19:00:42+03:00 9 месяцев, 1 неделя назад
1
Решение
91

У меня была аналогичная проблема, передавая объект данных в представление, а затем возвращаю его обратно - в этом случае он перерывает ссылку на datacontext. это не должно произойти в этом случае, но установка EntityState to Modified и привязка re-, которая сработала для меня, возможно, вам стоит попробовать.


var shoppingCartItem = GetShoppingCartItemById(shoppingCartItemId);
shoppingCartItem.Quantity = newQuantity;

_context.Entry(shoppingCartItem).State = System.Data.EntityState.Modified;

_context.SaveChanges();

Обратите внимание, что это работает только с EF4.1 - мне нужно было обновить до 4.1, чтобы получить простой способ редактировать элементы!

ответил(а) 2021-01-19T19:00:42+03:00 9 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема