我正在使用ASP.NET 4.0。
我有以下的代码,返回了一个错误:"Cannot access a disposed object. Object name: 'DataContext accessed after Dispose.'."
public IEnumerable<BatchHeader> GetHeaders()
{
using(NSFChecksDataContext context = DataContext)
{
IEnumerable<BatchHeader> headers = (from h in context.BatchHeaders
select h);
return headers;
}
}
如果我将这个改为:
public IEnumerable<BatchHeader> GetHeaders()
{
using(NSFChecksDataContext context = DataContext)
{
return context.BatchHeaders.ToList();
}
}
它会正常工作。我正在使用这种方法来填充一个RadGrid。有人可以解释一下为什么第二种方法可以工作,但第一种方法不能吗?
谢谢。
DataContext
自然垃圾回收,而不是调用Dispose
。我意识到这会冒犯纯粹主义者,但是...请参见http://leedumond.com/blog/about-disposing-the-datacontext/和http://lee.hdgreetings.com/2008/06/linq-datacontex.html。 - Robert Harvey