0

我一直在观察一个非常奇怪的案例。

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 的新实例是否真的是新的,如果不是,我如何才能完全“清除”它?

4

1 回答 1

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;
}

由于某种原因,现在它工作正常。

于 2012-08-21T14:45:17.917 回答