我想知道LINQ to SQL DataContext
缓存是否使用WeakReference
或类似系统以避免在几次请求后使用太多内存?
此行为是否取决于ObjectTrackingEnabled
属性?
答案 0 :(得分:2)
没有;它使用常规引用,因为通常它需要保持对象以执行更改跟踪(如您所述),但也需要身份管理器才能工作。
然而,这不是问题 - 因为您只是简单地使用DataContext
实例作为工作单元。否则,更改跟踪器/身份管理器的开销很快就会使数据上下文完全膨胀并且无法使用(太慢)。
因此;只需简单地使用数据上下文,并在操作完成后收集对象。不要随意保持数据上下文。
有时,您根本不需要数据上下文;对于读取主导的应用程序,有其他但类似的查询机制。