在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是否安全?
简短的回答,是的。一旦你调用了ToList(),对象应该从EF中分离出来,但是仍然会有EF定义的跟踪代理附加到它上面。
没有EF的东西会工作,但像延迟加载等…