我在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删除了对象的缓存,所以我无法再更新数据库(我通常不想要/使用的东西)。
在处理完上下文后使用列表是否安全?
答案 0 :(得分:1)
简短的回答,是的。一旦你调用ToList(),对象就应该与EF分离,但仍然会有一个由EF定义的跟踪代理。
但是没有EF的东西会对它起作用,比如懒人加载......