错误:无法删除对象,因为在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 ,或者该对象是独立创建的(可能是反序列化的)。

为了删除它,它必须首先了解它。这可能意味着一个对象附加到管理器 - 但在这种情况下,似乎更简单的选择就是将db传递给Get ,以便Get在同一个上下文中完成(因为db会自动附加它创建的对象)本身)。




许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因