在DbContext被处理后使用ef - link -query-result是否有效?

本文关键字:link -query-result 是否 有效 ef DbContext 处理 | 更新日期: 2023-09-27 18:07:06

所有的逻辑函数都在using-DbContext作用域中。对于我想要编写的未来代码(可能是重构),我考虑将其更改为这种形式,其中我使用上下文加载列表,并在它之后立即处理它,并使用列表进行进一步的计算。

Test()
{
    var list = (List<MyObject>)null;
    using( var ctx = new MyDbContext() )
    {
        list = ctx.MyTable.ToList();
    }
    // is the list guaranteed to be unchanged?
    foreach( var item in list )
    {
    }
}

唯一的区别(我猜)是EF删除了对象的缓存,所以我不能再更新数据库了(我通常不希望/使用)。

在context被处置后使用list是否安全?

在DbContext被处理后使用ef - link -query-result是否有效?

简短的回答,是的。一旦你调用了ToList(),对象应该从EF中分离出来,但是仍然会有EF定义的跟踪代理附加到它上面。

没有EF的东西会工作,但像延迟加载等…