我一直在观察一个非常奇怪的案例。
foreach (var obj in objs)
{
// a - unattached object
DomainObject a = this.dict[key];
using(var context = new DomainModelContainer())
{
this.SomeMethod(context, a);
}
}
...
private void SomeMethod(DomainModelContainer context, DomainObject obj)
{
// some code here with the query
context.Entry(obj).State = EntityState.Unchanged;
}
毕竟我得到一个异常:ObjectStateManager中已存在具有相同键的对象。 ObjectStateManager无法使用相同的键跟踪多个对象。
我想知道DbContext的新实例是否真的是新的,如果没有,我怎么能完全“清除”它呢?
答案 0 :(得分:0)
我没有设法找到上述问题的答案,但我设法解决了这个问题。
您需要做的就是每次都创建一个全新的对象:
private void SomeMethod(DomainModelContainer context, DomainObject obj)
{
// some code here with the query
var newObj = new DomainObject() { Id = obj.Id };
context.Entry(newObj).State = EntityState.Unchanged;
}
由于某种原因,它现在可以正常工作。