已经处理了ObjectContext实例

Nao*_*aor 5 .net c# entity-framework

我按照这里描述的方式使用实体框架: 实体框架使用了大量内存

我意识到我需要使用"using"语句才能正常工作.我在做的时候:

                using (IUnitOfWork uow = UnitOfWork.Current)
                {
                    CompanyRepository rep = new CompanyRepository();
                    m_AllAccounts = rep.GetQuery().
                        Select(x => new Account(x)).ToList(); ///HERE I GET THE EXCEPTION
                }
Run Code Online (Sandbox Code Playgroud)

对于这个例子,我得到:

The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Dan*_*mov 2

我可能是错的,但是我首先想到的是可能UnitOfWork.Current返回一个已经处理的工作单元。

想象一下下面的代码:

void MethodA ()
{
    using (IUnitOfWork uow = UnitOfWork.Current)
    {
        // do some query here
    }
}

void MethodB ()
{
    using (IUnitOfWork uow = UnitOfWork.Current)
    {
        // do another query here
    }
}

MethodA (); // works OK
// now UnitOfWork.Current is disposed
MethodB ();  // raises exception
Run Code Online (Sandbox Code Playgroud)

问题归结为到底UnitOfWork.Current做什么以及应该做什么。每次访问时都应该创建一个新对象吗?除非被处置,否则是否应该保留引用?这并不明显,您可能对此感到困惑。