在迭代结果之后,实体框架ObjectContext是否维护引用

时间:2010-05-05 14:52:00

标签: entity-framework entity-framework-4

我在这篇文章中关注的用例涉及迭代查询返回的大量实体(100K +)。

给出以下代码片段:

var query = from c in context.Customers select c;
foreach(var customer in query)
    printCustomerStatement(customer);

在这个例子中,很明显在调用printCustomerStatement之后不需要客户实例。 ObjectContext是否会保持对它的引用?我的期望是它不会。并且这个foreach的行为类似于仅向前只读的枚举器方法调用。

1 个答案:

答案 0 :(得分:3)

取决于查询MergeOption

如果你这样做:

context.Customers.MergeOption = MergeOption.NoTracking;
var query = from c in context.Customers select c;
foreach(var customer in query)
    printCustomerStatement(customer);

...然后上下文不会存储这些引用。

使用MergeOption的默认AppendOnly,它会。