Ошибка: объект нельзя удалить, поскольку он не найден в объекте ObjectStateManager

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

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

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

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

Ответ 1

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

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