【发布时间】:2012-02-02 12:42:29
【问题描述】:
我想知道 LINQ to SQL DataContext 缓存是否使用 WeakReference 或类似系统以避免在几次请求后使用过多内存?
此行为是否取决于 ObjectTrackingEnabled 属性?
【问题讨论】:
标签: .net linq linq-to-sql caching datacontext
我想知道 LINQ to SQL DataContext 缓存是否使用 WeakReference 或类似系统以避免在几次请求后使用过多内存?
此行为是否取决于 ObjectTrackingEnabled 属性?
【问题讨论】:
标签: .net linq linq-to-sql caching datacontext
没有;它使用常规引用,因为通常它需要保留对象以执行更改跟踪(正如您提到的),而且身份管理器也可以工作。
但是,这不是问题 - 因为您只是打算短暂使用 DataContext 实例作为工作单元。因为否则,更改跟踪器/身份管理器的开销很快就会使数据上下文完全膨胀且无法使用(太慢)。
所以;只需简单地使用数据上下文,并在操作完成后收集对象。不要随意掌握数据上下文。
有时,您根本不需要数据上下文;对于以读取为主的应用程序,有替代但类似的查询机制。
【讨论】: