Ошибка: объект не может быть удален, потому что он не был найден в ObjectStateManager

c# entity-framework linq-to-entities

Вопрос

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

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

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

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

Принятый ответ

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

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



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему