【发布时间】:2011-12-23 22:10:38
【问题描述】:
我今天的这个很奇怪。
我在汇编方法中有这个查询。
public Order[] SelectAllOrders()
{
Order[] orders;
using (MyDataContext context = new MyDataContext())
{
DataLoadOptions dlo = new DataLoadOptions();
dlo.LoadWith<Order>(order => order.OrderDetails);
context.LoadOptions = dlo;
orders = context.Orders.Select(p => p).ToArray();
}
return orders;
}
假设我已经调用了 SQL 命令执行的 ToArray() 并给了我我需要的对象,我将它们给了一个新的 Order[] 数组,这不应该需要 DataContext 实例。 在我序列化从方法返回得到的 Order[] 时,序列化程序尝试再次访问 DataContext,我得到一个无法访问已处理对象的异常。
在没有 using() 语句的情况下进行了尝试,并且可以正常工作。但是,为什么我会得到这种行为? 任何人都可以解释为什么在我调用 .ToArray() 并用内容分配新变量时延迟加载仍然存在?
【问题讨论】:
标签: linq-to-sql c#-3.0