錯誤:無法刪除對象,因為在ObjectStateManager中找不到該對象

c# entity-framework linq-to-entities

試圖在這裡獲得實體框架的處理,我遇到了一些速度障礙...我有一個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 ,或者該對J1Entities獨立創建的(可能是反序列化的)。

為了刪除它,它必須首先了解它。這可能意味著一個對象附加到管理器 - 但在這種情況下,似乎更簡單的選擇就是將db傳遞給Get ,以便Get在同一個上下文中完成(因為db將自動附加它創建的對象)本身)。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因