Ошибка: объект не может быть удален, потому что он не был найден в ObjectStateManager - PullRequest
11 голосов
/ 16 января 2009

Пытаюсь разобраться с Entity Framework здесь, и я попадаю в некоторые удары скорости ... У меня есть метод Get (), который работает нормально и был протестирован, но мой метод Delete не работает:

   public static void Delete(string name)
    {
        J1Entities db = new J1Entities();
        db.DeleteObject(Get(name));
        db.SaveChanges();
    }

Но я получаю следующую ошибку: Ошибка: невозможно удалить объект, поскольку он не был найден в ObjectStateManager.

Я запустил отладчик, и объект внутри DeleteObject правильный ... что мне не хватает? Спасибо.

1 Ответ

16 голосов
/ 16 января 2009

Каждый объект EF тесно связан с менеджером (из-за отсутствия лучшего слова), который его создал. или с которым это было связано. Поскольку вы не передаете db своему Get методу, я предполагаю, что Get либо использовал свой собственный J1Entities, либо объект был создан автономно (возможно, десериализовано).

Чтобы удалить его, он должен знать об этом сначала . Это может означать присоединение объекта к менеджеру - но в этом случае кажется, что более простой вариант - просто передать db в Get, так что Get выполняется в тот же контекст (поскольку db автоматически присоединит объекты, которые он создает сам).

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