好吧,这个问题几乎说明了一切,但我会尽力为您提供上下文。我正在使用 Entity Framework 4.0,我经常使用以下语法 -
using (MLEntities context = ModelAccess.GetContext())
{
/*just a sample statement*/
this.ClientList = context.Clients.ToList();
...
//Some other code
}
我的理解是,每当我退出using
块时,都会调用类(MLEntitiesDispose()
的基类)的方法,我猜这会释放任何非托管资源,特别是在这种情况下,是数据库连接。ObjectContext
但是由于我通过this.ClientList = context.Clients.ToList();
上下文持有对上下文对象的引用,因此不会被垃圾收集。正确的?
现在对于一些实例化的上下文对象,当应用程序运行时,我需要知道它们是否仍然被持有、被应用程序使用,或者它们是否已经被释放。我没有对using
块外上下文的任何引用,但即使我有任何引用,尝试使用该引用也会使应用程序使用上下文对象。那么我该怎么做呢?任何建议表示赞赏。谢谢。
编辑:实际上我并不是说我持有对上下文对象的直接引用。诚实的错误。我的意思是,因为Clients
它是上下文的一个属性,并且通过this.ClientList
我持有对 的引用Clients
,只要实例化上下文的当前对象与它一起存在this.ClientList
,它不会使上下文对象也保持活动状态吗?