问题 错误:无法删除该对象,因为在ObjectStateManager中找不到该对象


试图在这里获得实体框架的处理,我正在遇到一些速度障碍...... 我有一个Get()方法工作正常并已经过测试,但我的Delete方法不起作用:

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

但是我收到以下错误: 错误:无法删除该对象,因为在ObjectStateManager中找不到该对象。

我运行了调试器,DeleteObject中的对象是正确的......我错过了什么?谢谢。


10311
2018-01-16 07:18


起源



答案:


每个EF对象都与创建它的管理器(因为缺少更好的单词)紧密相关。或与之相关的。既然你不通过 db 到你的 Get 方法,我假设 Get 要么使用它自己的 J1Entities,或者对象是独立创建的(可能是反序列化的)。

为了删除它,它必须知道它 第一。这可能意味着 附上 经理的一个对象 - 但在这种情况下,似乎更简单的选择就是通过 db 成 Get, 所以这样 Get 是在相同的背景下完成的(因为 db 将自动附加它自己创建的对象)。


16
2018-01-16 07:25



完美......我觉得这很简单...... :) - naspinski


答案:


每个EF对象都与创建它的管理器(因为缺少更好的单词)紧密相关。或与之相关的。既然你不通过 db 到你的 Get 方法,我假设 Get 要么使用它自己的 J1Entities,或者对象是独立创建的(可能是反序列化的)。

为了删除它,它必须知道它 第一。这可能意味着 附上 经理的一个对象 - 但在这种情况下,似乎更简单的选择就是通过 db 成 Get, 所以这样 Get 是在相同的背景下完成的(因为 db 将自动附加它自己创建的对象)。


16
2018-01-16 07:25



完美......我觉得这很简单...... :) - naspinski