启动时间长和实体物化缓慢的问题影响了 Entity Framework 6

阅读数:1105 2013 年 11 月 7 日

话题:语言 & 开发

在使用最近发布的Entity Framework 6进行开发的过程中,一些开发人员报告了影响他们项目的性能问题。报告的第一个问题与启动时间有关。在模型创建阶段,当元数据集合以一种会触发很多 Debugger.NotifyOfCrossThreadDependency()调用的方式使用 Lazy<T> 时,会导致调试器附加到项目,进而产生该问题。在本文写作的时候,产品团队已经解决了这个问题。

LLBLGen Pro 首席开发人员 Frans Bouma 报告了 Entity Framework 6.0.1实体物化缓慢的问题。Frans 使用 dotTrace 运行.NET 性能分析。其中,GetEnumerator 方法获取实际数据用了 0.02% 的时间,而在结果集上调用 MoveNext 方法消耗了其余的时间。

Frans 说,“依我看,问题有些严重,但我不知道是什么问题。”

还有少数开发人员报告了未附加调试器时的启动性能问题。例如,开发人员在按下 F5 后要等待大约 10 到 15 秒。

微软已经发布了解决第一个问题的补丁(6.0.2)(译者注:原文补丁版本有误;另外,第二个问题还处于调查研究状态)。如果从NuGet安装 Entity Framework 6,可以自动获得最新版本。不过,如果使用包含了 Entity Framework 6 的 Visual Studio 2013 项目模板,那么需要通过在包管理控制台上运行 Update-Package EntityFramework 命令来更新到最新的版本。

根据官方消息,一个新的更新将很快发布,用于解决性能问题和其它高优先级的 Bug,也包括开发人员在日常工作中报告的一些新问题。

查看英文原文:Slow Startup Time and Entity Materialization Issues Affects Entity Framework 6