gpt4 book ai didi

entity-framework - PLINQ 到 Entity Framework : why shouldn't it be used?

转载 作者:行者123 更新时间:2023-12-02 01:03:51 25 4
gpt4 key购买 nike

我在某处读到你不应该在 Entity Framework 或 SQL 上使用 PLINQ。我不记得我在哪里读到它或原因是什么,但我做了一些实验。使用传统的 LINQ to Entity Framework 加载一个预计会变得非常大的数据库表目前需要 12 到 13 毫秒。但是,当我添加 .AsParallel() 时,相同的查询会在 2 到 4 毫秒内运行,并且得到完全相同的结果。

因此,如果我使用 PLINQ 更快地获得相同的结果,那么使用 PLINQ to Entity Framework 有哪些陷阱?

最佳答案

有一些危险,即 DbContext 不能被多个线程同时访问。而且通常没有什么好处,即 PLINQ 将同步对 IEnumerable.MoveNext() 的访问,它完成读取数据、创建实体和与更改跟踪器交互的所有工作。

但是,如果您对返回的实体做了大量工作,而不会触及 DbContext(即没有 SaveChanges()、没有延迟加载等),您可以使用 PLINQ。

但是我能想到的大多数示例都可以通过将操作构建到原始查询中或通过执行服务器端原始 SQL 来进行更好的优化。

因此,如果您有一堆 CPU 密集型域逻辑,您需要跨实体集合运行,则可以跨结果并行操作,但最好在并行执行块内创建一个单独的 DbContext。

关于entity-framework - PLINQ 到 Entity Framework : why shouldn't it be used?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48809105/

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