gpt4 book ai didi

.net - Entity Framework 和分离对象

转载 作者:行者123 更新时间:2023-12-04 20:00:37 24 4
gpt4 key购买 nike

在构建在其数据访问层使用 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();

与手动分离实体相比,没有跟踪查询还有另一个好处:手动分离会断开实体与其实体图的其余部分的连接,因为没有跟踪查询,您可以检索所有已分离的实体的连接图。

但是使用非跟踪查询也有一些缺点:
由于关闭了身份解析,您有时会遇到读取重复结果的情况。

因此,除非您真的确信您的查询只会返回每个实体的一个副本,否则您应该小心,否则最终可能会出现 UI 错误。

希望这可以帮助

亚历克斯

PS:这个 tip on ObjectContext lifetime可能对你有帮助。

关于.net - Entity Framework 和分离对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1860391/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com