Muh*_*man 5 .net entity-framework
在构建在其数据访问层中使用实体框架的Web应用程序时,建议从对象上下文中分离对象以允许对象进行垃圾回收.
但由于Web应用程序都是请求 - >响应应用程序,因此在将响应发送给客户之后,任何活动对象都不再引用对象上下文本身,因此对象上下文及其附加对象应该可用于垃圾回收,因为没有活动对象引用它们中的任何一个.
我在这里错过了什么或在这种情况下不需要分离对象吗?
我怀疑您看到的指南正在讨论无跟踪查询
对于读取密集型网站来说,无跟踪查询肯定具有一些性能优势。
对象永远不会附加,并通过身份进行跟踪,因此您不需要分离它们,这避免了在物化期间进行身份解析的成本。
无跟踪查询如下所示:
var source = ctx.Staff;
source.MergeOption == MergeOption.NoTracking;
var staff = (from s in source
where s.ID == 12
select s).First();
Run Code Online (Sandbox Code Playgroud)
与手动分离实体相比,无跟踪查询还有另一个好处:手动分离会断开实体与其实体图的其余部分的连接,而在没有跟踪查询的情况下,您可以检索全部分离的实体的连接图。
但使用非跟踪查询也有一些缺点: 您有时可能会因为关闭身份解析而导致读取重复结果。
因此,除非您确实确信您的查询只会返回每个实体的一份副本,否则您应该小心,否则最终可能会出现 UI 错误。
希望这可以帮助
亚历克斯
PS:这个关于 ObjectContext 生命周期的技巧可能对您有帮助。
| 归档时间: |
|
| 查看次数: |
515 次 |
| 最近记录: |