EF не обновляет определенный объект в SaveChanges - PullRequest
1 голос
/ 01 июня 2011

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

Вот мой код:

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)) после изменения свойства Количество, оно не изменяется: (

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

1 Ответ

0 голосов
/ 01 июня 2011

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

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


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

_context.SaveChanges();

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...