我在这篇文章中关注的用例涉及迭代查询返回的大量实体(100K +)。
给出以下代码片段:
var query = from c in context.Customers select c;
foreach(var customer in query)
printCustomerStatement(customer);
在这个例子中,很明显在调用printCustomerStatement之后不需要客户实例。 ObjectContext是否会保持对它的引用?我的期望是它不会。并且这个foreach的行为类似于仅向前只读的枚举器方法调用。
答案 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
,它会。