如何摆脱“实体对象不能被IEntityChangeTracker的多个实例引用”?

entity-framework

我在Ado.Net EF中有一个模型。我有一对多关系,当我想添加实体时,我得到了错误

“IEntityChangeTracker的多个实例无法引用实体对象”

任何线索?

类似的东西

Template template = new Template();
...
...
while (from < to)
{
    Course course = new Course();
    .....
    template.Course.Add(course);
    .....
}
courseEntities.AddToTemplate(template); // Problem line
courseEntities.SaveChanges();

一般承认的答案

我收到此消息,直到我开始将数据上下文存储在HttpContext.Items属性中。这意味着您可以为当前Web请求使用相同的数据上下文。这样,您最终不会引用引用相同实体的2个数据上下文。

这是一篇关于DataContext Life Management的好文章。

我希望它有所帮助。

戴夫


热门答案

“template”或它引用的内容已经添加到courseEntities 其他上下文中。我没有在你展示的代码中看到它会做什么,但肯定会发生。也许它已经在你修剪过的一些代码中发生了。查看调试器中“template”的EntityState属性,并查看“template”属性的EntityState。这应该可以帮助您找出上下文中已经存在的实体实例。




许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因