【问题标题】:Error: The object cannot be deleted because it was not found in the ObjectStateManager错误:无法删除对象,因为它在 ObjectStateManager 中找不到
【发布时间】:2010-10-01 18:34:42
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c# entity-framework linq-to-entities


    【解决方案1】:

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

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

    【讨论】:

    • 完美...我认为这很简单... :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 2016-07-03
    相关资源
    最近更新 更多