代码之家  ›  专栏  ›  技术社区  ›  naspinski

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

  •  11
  • naspinski  · 技术社区  · 15 年前

    在这里尝试了解实体框架,我遇到了一些障碍… 我有一个get()方法可以正常工作并且已经过测试,但是我的delete方法不起作用:

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

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

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

    1 回复  |  直到 13 年前
        1
  •  16
  •   Marc Gravell    15 年前

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

    为了删除它,它必须知道它 第一 . 这可能意味着 附着 管理者的对象-但在这种情况下,一个更简单的选择似乎只是传递 分贝 进入之内 得到 ,以便 得到 在相同的上下文中完成(自 分贝 将自动附加它自己创建的对象)。