试图在这里处理实体框架,我遇到了一些速度障碍...... 我有一个Get()方法工作正常并已经过测试,但我的Delete方法无效:
public static void Delete(string name)
{
J1Entities db = new J1Entities();
db.DeleteObject(Get(name));
db.SaveChanges();
}
但是我收到以下错误: 错误:无法删除对象,因为在ObjectStateManager中找不到该对象。
我运行了调试器,DeleteObject中的对象是正确的......我错过了什么?谢谢。
答案 0 :(得分:16)
每个EF对象都与创建它的管理器(因为缺少更好的单词)紧密相关。或与之相关的。由于您未将db
传递给Get
方法,因此我假设Get
已使用它自己的J1Entities
,或者该对象已独立创建(可能是反序列化的)
为了删除它,它必须首先知道它 。这可能意味着将一个对象附加到管理器 - 但在这种情况下,似乎更简单的选择就是将db
传递给Get
,以便{{} 1}}在相同的上下文中完成(因为Get
将自动附加它自己创建的对象。)