我正在调试一堆 MVC/EF 代码,这些代码是其他人从 Java 中翻译过来的。
代码中的一个片段类似于:
public ActionResult Index()
{
using (var context = new Models.FooEntities())
{
var exp = context.Expenses.FirstOrDefault(e => e.Id == 17);
if (exp != null)
{
context.Expenses.DeleteObject(exp);
context.SaveChanges();
}
}
return Content("Deleted");
}
简单的。正确的?它应该删除 ID 为 17 的实体 Expense。
但是,调用 toSaveChanges
会引发InvalidOperationException
带有消息的 an,"The object is in a detached state. This operation cannot be performed on an ObjectStateEntry when the object is detached."
现在,我理解了这个信息,我很惊讶,因为所讨论的实体从未脱离上下文。至少从我在上面的片段中看到的。
可能有更多的东西,但是当我没有更多选择时,我会考虑将其作为一个选项,因为跟踪这个巨大的大部分写得很糟糕的 Java 代码的音译的整个调用堆栈是一场噩梦,没有人明白。