有一堆MVC/EF代码,我正在调试,其他人已经从Java编写过渡过。从代码对象处于分离状态。当对象被分离时,该操作无法在ObjectStateEntry上执行
一个片断类似于此:
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
但是删除实体的费用,调用SaveChanges
引发与消息的InvalidOperationException
,"The object is in a detached state. This operation cannot be performed on an ObjectStateEntry when the object is detached."
现在,我明白了消息,我很惊讶,因为根据有关机构是从来没有与上下文分离。至少从我在上面的代码片段中看到的。
可能不仅仅是满足眼睛,但我会考虑作为一个选项,当我没有更多的选择,因为这是一个噩梦跟踪整个调用堆栈这个大部分写得不好的Java代码没有人理解。
乍一看我唯一能想到的就是在上下文本身中禁用延迟加载_and_删除实体会触发级联删除,但是不会通过数据库中的级联删除FK约束来实现。 –
这使得很多意义。谢谢。阿玛明天尝试并报告回来。 –
它也可以是一个非延迟加载的集合,因为它不是'虚拟'的,或者可以禁用代理生成。 –