11

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

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

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

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

4

1 回答 1

17

每个 EF 对象都与创建它的管理器紧密关联(因为需要更好的词)。或与之相关的。由于您没有传递db给您的Get方法,我假设它Get已经使用了它自己的J1Entities,或者该对象是独立创建的(可能是反序列化的)。

为了删除它,它必须首先知道。这可能意味着通过对象附加到管理器 - 但在这种情况下,似乎更简单的选择只是传递dbGet,以便Get在相同的上下文中完成(因为db将自动附加它自己创建的对象)。

于 2009-01-16T07:25:16.643 回答